Parcourir la source

Make some tests more resilient with retries

Nick Babcock il y a 5 ans
Parent
commit
22ce20adb3
2 fichiers modifiés avec 61 ajouts et 23 suppressions
  1. 39 17
      OhmGraphite.Test/GraphiteTest.cs
  2. 22 6
      OhmGraphite.Test/InfluxTest.cs

+ 39 - 17
OhmGraphite.Test/GraphiteTest.cs

@@ -13,15 +13,27 @@ namespace OhmGraphite.Test
             using (var writer = new GraphiteWriter("graphite", 2003, "my-pc", tags: false))
             using (var client = new HttpClient())
             {
-                await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
+                for (int attempts = 0; ; attempts++)
+                {
+                    try
+                    {
+                        await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
 
-                // wait for carbon to sync to disk
-                Thread.Sleep(TimeSpan.FromSeconds(4));
+                        var resp = await client.GetAsync(
+                            "http://graphite/render?format=csv&target=ohm.my-pc.intelcpu.0.temperature.cpucore.1");
+                        var content = await resp.Content.ReadAsStringAsync();
+                        Assert.Contains("ohm.my-pc.intelcpu.0.temperature.cpucore.1", content);
+                        break;
+                    }
+                    catch (Exception)
+                    {
+                        if (attempts >= 10)
+                        {
+                            throw;
+                        }
 
-                {
-                    var resp = await client.GetAsync("http://graphite/render?format=csv&target=ohm.my-pc.intelcpu.0.temperature.cpucore.1");
-                    var content = await resp.Content.ReadAsStringAsync();
-                    Assert.Contains("ohm.my-pc.intelcpu.0.temperature.cpucore.1", content);
+                        Thread.Sleep(TimeSpan.FromSeconds(1));
+                    }
                 }
             }
 
@@ -35,19 +47,29 @@ namespace OhmGraphite.Test
 
             using (var writer = new GraphiteWriter("graphite", 2003, "my-pc", tags: true))
             using (var client = new HttpClient())
-
             {
-                await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
+                for (int attempts = 0; ; attempts++)
+                {
+                    try
+                    {
+                        await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
 
-                // wait for carbon to sync to disk
-                Thread.Sleep(TimeSpan.FromSeconds(4));
+                        var resp = await client.GetAsync("http://graphite/render?format=csv&target=seriesByTag('sensor_type=Temperature','hardware_type=CPU')");
+                        var content = await resp.Content.ReadAsStringAsync();
+                        Assert.Contains("host=my-pc", content);
+                        Assert.Contains("app=ohm", content);
+                        Assert.Contains("sensor_type=Temperature", content);
+                        break;
+                    }
+                    catch (Exception)
+                    {
+                        if (attempts >= 10)
+                        {
+                            throw;
+                        }
 
-                {
-                    var resp = await client.GetAsync("http://graphite/render?format=csv&target=seriesByTag('sensor_type=Temperature','hardware_type=CPU')");
-                    var content = await resp.Content.ReadAsStringAsync();
-                    Assert.Contains("host=my-pc", content);
-                    Assert.Contains("app=ohm", content);
-                    Assert.Contains("sensor_type=Temperature", content);
+                        Thread.Sleep(TimeSpan.FromSeconds(1));
+                    }
                 }
             }
         }

+ 22 - 6
OhmGraphite.Test/InfluxTest.cs

@@ -14,13 +14,29 @@ namespace OhmGraphite.Test
             using (var writer = new InfluxWriter(config, "my-pc"))
             using (var client = new HttpClient())
             {
-                await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
-                Thread.Sleep(TimeSpan.FromSeconds(1));
+                for (int attempts = 0; ; attempts++)
+                {
+                    try
+                    {
+                        await writer.ReportMetrics(DateTime.Now, TestSensorCreator.Values());
 
-                var resp = await client.GetAsync("http://influx:8086/query?pretty=true&db=mydb&q=SELECT%20*%20FROM%20Temperature");
-                Assert.True(resp.IsSuccessStatusCode);
-                var content = await resp.Content.ReadAsStringAsync();
-                Assert.Contains("/intelcpu/0/temperature/0", content);
+                        var resp = await client.GetAsync(
+                            "http://influx:8086/query?pretty=true&db=mydb&q=SELECT%20*%20FROM%20Temperature");
+                        Assert.True(resp.IsSuccessStatusCode);
+                        var content = await resp.Content.ReadAsStringAsync();
+                        Assert.Contains("/intelcpu/0/temperature/0", content);
+                        break;
+                    }
+                    catch (Exception ex)
+                    {
+                        if (attempts >= 10)
+                        {
+                            throw;
+                        }
+
+                        Thread.Sleep(TimeSpan.FromSeconds(1));
+                    }
+                }
             }
         }
     }