Ver código fonte

Prometheus test

Nick Babcock 6 anos atrás
pai
commit
561bf0877f

+ 37 - 0
OhmGraphite.Test/PrometheusTest.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using OpenHardwareMonitor.Hardware;
+using Prometheus;
+using Xunit;
+
+namespace OhmGraphite.Test
+{
+    public class PrometheusTest
+    {
+        [Fact]
+        public async void PrometheusTestServer()
+        {
+            var collector = new TestSensorCreator();
+            var prometheusCollection = new PrometheusCollection(collector, "my-pc");
+            var mserver = new MetricServer("localhost", 21881);
+            var server = new PrometheusServer(mserver, collector, prometheusCollection);
+            try
+            {
+                server.Start();
+                var client = new HttpClient();
+                var resp = await client.GetAsync("http://localhost:21881/metrics");
+                Assert.True(resp.IsSuccessStatusCode);
+                var content = await resp.Content.ReadAsStringAsync();
+                Assert.Contains("# HELP intelcpu_0_temperature_0 Metric reported by open hardware sensor", content);
+            }
+            finally
+            {
+                server.Stop();
+            }
+        }
+    }
+}

+ 11 - 1
OhmGraphite.Test/TestSensorCreator.cs

@@ -3,7 +3,7 @@ using OpenHardwareMonitor.Hardware;
 
 namespace OhmGraphite.Test
 {
-    class TestSensorCreator
+    class TestSensorCreator : IGiveSensors
     {
         public static IEnumerable<ReportedValue> Values()
         {
@@ -11,5 +11,15 @@ namespace OhmGraphite.Test
             yield return new ReportedValue("/intelcpu/0/temperature/1", "CPU Core #2", 15, SensorType.Temperature, "Intel Core i7-6700K", HardwareType.CPU, 1);
             yield return new ReportedValue("/intelcpu/0/temperature/2", "CPU Core #3", 10, SensorType.Temperature, "Intel Core i7-6700K", HardwareType.CPU, 2);
         }
+
+        public IEnumerable<ReportedValue> ReadAllSensors() => Values();
+
+        public void Start()
+        {
+        }
+
+        public void Stop()
+        {
+        }
     }
 }

+ 13 - 0
OhmGraphite/IGiveSensors.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OhmGraphite
+{
+    public interface IGiveSensors : IManage
+    {
+        IEnumerable<ReportedValue> ReadAllSensors();
+    }
+}

+ 1 - 1
OhmGraphite/IManage.cs

@@ -1,6 +1,6 @@
 namespace OhmGraphite
 {
-    interface IManage
+    public interface IManage
     {
         void Start();
         void Stop();

+ 4 - 4
OhmGraphite/MetricTimer.cs

@@ -9,12 +9,12 @@ namespace OhmGraphite
     public class MetricTimer : IManage
     {
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
-        private readonly SensorCollector _collector;
+        private readonly IGiveSensors _collector;
 
         private readonly Timer _timer;
         private readonly IWriteMetrics _writer;
 
-        public MetricTimer(TimeSpan interval, SensorCollector collector, IWriteMetrics writer)
+        public MetricTimer(TimeSpan interval, IGiveSensors collector, IWriteMetrics writer)
         {
             _timer = new Timer(interval.TotalMilliseconds) {AutoReset = true};
             _timer.Elapsed += ReportMetrics;
@@ -26,7 +26,7 @@ namespace OhmGraphite
         {
             Logger.LogAction("starting metric timer", () =>
             {
-                _collector.Open();
+                _collector.Start();
                 _timer.Start();
             });
         }
@@ -35,7 +35,7 @@ namespace OhmGraphite
         {
             Logger.LogAction("stopping metric timer", () =>
             {
-                _collector.Close();
+                _collector.Stop();
                 _timer.Stop();
             });
         }

+ 2 - 2
OhmGraphite/PrometheusCollection.cs

@@ -9,11 +9,11 @@ namespace OhmGraphite
     public class PrometheusCollection : IOnDemandCollector
     {
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
-        private readonly SensorCollector _collector;
+        private readonly IGiveSensors _collector;
         private readonly string _localHost;
         private MetricFactory _metrics;
 
-        public PrometheusCollection(SensorCollector collector, string localHost)
+        public PrometheusCollection(IGiveSensors collector, string localHost)
         {
             _collector = collector;
             _localHost = localHost;

+ 4 - 4
OhmGraphite/PrometheusServer.cs

@@ -9,10 +9,10 @@ namespace OhmGraphite
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 
         private readonly MetricServer _server;
-        private readonly SensorCollector _collector;
+        private readonly IGiveSensors _collector;
         private readonly PrometheusCollection _prometheusCollection;
 
-        public PrometheusServer(MetricServer server, SensorCollector collector, PrometheusCollection prometheusCollection)
+        public PrometheusServer(MetricServer server, IGiveSensors collector, PrometheusCollection prometheusCollection)
         {
             _server = server;
             _collector = collector;
@@ -24,7 +24,7 @@ namespace OhmGraphite
             Logger.LogAction("starting prometheus server", () =>
             {
                 DefaultCollectorRegistry.Instance.RegisterOnDemandCollectors(_prometheusCollection);
-                _collector.Open();
+                _collector.Start();
                 _server.Start();
             });
         }
@@ -33,7 +33,7 @@ namespace OhmGraphite
         {
             Logger.LogAction("stopping prometheus server", () =>
             {
-                _collector.Close();
+                _collector.Stop();
                 _server.Stop();
             });
         }

+ 4 - 1
OhmGraphite/SensorCollector.cs

@@ -6,7 +6,7 @@ using OpenHardwareMonitor.Hardware;
 
 namespace OhmGraphite
 {
-    public class SensorCollector
+    public class SensorCollector : IGiveSensors
     {
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
         private readonly Computer _computer;
@@ -39,6 +39,9 @@ namespace OhmGraphite
             _computer.Close();
         }
 
+        public void Start() => Open();
+        public void Stop() => Close();
+
         private void HardwareAdded(IHardware hardware)
         {
             if (!_ids.TryAdd(hardware.Identifier, hardware))