PrometheusTest.cs 2.7 KB

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