1
0

PrometheusTest.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections.Generic;
  2. using System.Net.Http;
  3. using Prometheus;
  4. using Xunit;
  5. namespace OhmGraphite.Test
  6. {
  7. public class PrometheusTest
  8. {
  9. [Fact]
  10. public async void PrometheusTestServer()
  11. {
  12. var collector = new TestSensorCreator();
  13. var registry = PrometheusCollection.SetupDefault(collector);
  14. var mserver = new MetricServer("localhost", 21881, registry: registry);
  15. using var server = new PrometheusServer(mserver, collector);
  16. using var client = new HttpClient();
  17. server.Start();
  18. var resp = await client.GetAsync("http://localhost:21881/metrics");
  19. Assert.True(resp.IsSuccessStatusCode);
  20. var content = await resp.Content.ReadAsStringAsync();
  21. Assert.Contains("# HELP ohm_cpu_celsius Metric reported by open hardware sensor", content);
  22. }
  23. [Fact]
  24. public async void PrometheusNicGuid()
  25. {
  26. var collector = new NicGuidSensor();
  27. var registry = PrometheusCollection.SetupDefault(collector);
  28. var mserver = new MetricServer("localhost", 21882, registry: registry);
  29. using var server = new PrometheusServer(mserver, collector);
  30. using var client = new HttpClient();
  31. server.Start();
  32. var resp = await client.GetAsync("http://localhost:21882/metrics");
  33. Assert.True(resp.IsSuccessStatusCode);
  34. var content = await resp.Content.ReadAsStringAsync();
  35. Assert.Contains("Bluetooth Network Connection 2", content);
  36. }
  37. [Fact]
  38. public void PrometheusStopServerWithoutStarting()
  39. {
  40. var collector = new NicGuidSensor();
  41. var registry = PrometheusCollection.SetupDefault(collector);
  42. var mserver = new MetricServer("localhost", 21883, registry: registry);
  43. var server = new PrometheusServer(mserver, collector);
  44. // Asserting that the following doesn't throw when the server
  45. // is disposed before starting
  46. server.Dispose();
  47. }
  48. public class NicGuidSensor : IGiveSensors
  49. {
  50. public IEnumerable<ReportedValue> ReadAllSensors()
  51. {
  52. yield return new ReportedValue("/nic/{my-guid}/throughput/7", "Bluetooth Network Connection 2", 1.06f, SensorType.Throughput, "cpu", HardwareType.NIC, "{my-guid}", 7);
  53. }
  54. public void Start()
  55. {
  56. }
  57. public void Dispose()
  58. {
  59. }
  60. }
  61. }
  62. }