ConfigTest.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using System;
  2. using System.Configuration;
  3. using System.Net;
  4. using Xunit;
  5. namespace OhmGraphite.Test
  6. {
  7. public class ConfigTest
  8. {
  9. [Fact]
  10. public void CanParseGraphiteConfig()
  11. {
  12. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/graphite.config" };
  13. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  14. var customConfig = new CustomConfig(config);
  15. var results = MetricConfig.ParseAppSettings(customConfig);
  16. Assert.NotNull(results.Graphite);
  17. Assert.Null(results.Influx);
  18. Assert.Equal("myhost", results.Graphite.Host);
  19. Assert.Equal(2004, results.Graphite.Port);
  20. Assert.Equal(TimeSpan.FromSeconds(6), results.Interval);
  21. Assert.True(results.Graphite.Tags);
  22. }
  23. [Fact]
  24. public void CanParseNullConfig()
  25. {
  26. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/default.config" };
  27. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  28. var customConfig = new CustomConfig(config);
  29. var results = MetricConfig.ParseAppSettings(customConfig);
  30. Assert.NotNull(results.Graphite);
  31. Assert.Null(results.Influx);
  32. Assert.Equal("localhost", results.Graphite.Host);
  33. Assert.Equal(2003, results.Graphite.Port);
  34. Assert.Equal(TimeSpan.FromSeconds(5), results.Interval);
  35. Assert.False(results.Graphite.Tags);
  36. Assert.True(results.EnabledHardware.Cpu);
  37. Assert.True(results.EnabledHardware.Gpu);
  38. Assert.True(results.EnabledHardware.Motherboard);
  39. Assert.True(results.EnabledHardware.Controller);
  40. Assert.True(results.EnabledHardware.Network);
  41. Assert.True(results.EnabledHardware.Ram);
  42. Assert.True(results.EnabledHardware.Storage);
  43. }
  44. [Fact]
  45. public void CanParseInfluxDbConfig()
  46. {
  47. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/influx.config" };
  48. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  49. var customConfig = new CustomConfig(config);
  50. var results = MetricConfig.ParseAppSettings(customConfig);
  51. Assert.Null(results.Graphite);
  52. Assert.NotNull(results.Influx);
  53. Assert.Equal(TimeSpan.FromSeconds(6), results.Interval);
  54. Assert.Equal("http://192.168.1.15:8086/", results.Influx.Address.ToString());
  55. Assert.Equal("mydb", results.Influx.Db);
  56. Assert.Equal("my_user", results.Influx.User);
  57. Assert.Equal("my_pass", results.Influx.Password);
  58. }
  59. [Fact]
  60. public void CanParsePrometheusConfig()
  61. {
  62. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/prometheus.config" };
  63. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  64. var customConfig = new CustomConfig(config);
  65. var results = MetricConfig.ParseAppSettings(customConfig);
  66. Assert.Null(results.Graphite);
  67. Assert.Null(results.Influx);
  68. Assert.NotNull(results.Prometheus);
  69. Assert.Equal(4446, results.Prometheus.Port);
  70. Assert.Equal("127.0.0.1", results.Prometheus.Host);
  71. }
  72. [Fact]
  73. public void CanParseTimescaleConfig()
  74. {
  75. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/timescale.config" };
  76. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  77. var customConfig = new CustomConfig(config);
  78. var results = MetricConfig.ParseAppSettings(customConfig);
  79. Assert.Null(results.Graphite);
  80. Assert.Null(results.Influx);
  81. Assert.Null(results.Prometheus);
  82. Assert.NotNull(results.Timescale);
  83. Assert.Equal("Host=vm-ubuntu;Username=ohm;Password=123456", results.Timescale.Connection);
  84. Assert.False(results.Timescale.SetupTable);
  85. }
  86. [Fact]
  87. public void CanParseStaticResolutionName()
  88. {
  89. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/static-name.config" };
  90. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  91. var customConfig = new CustomConfig(config);
  92. var results = MetricConfig.ParseAppSettings(customConfig);
  93. Assert.Equal("my-cool-machine", results.LookupName());
  94. }
  95. [Fact]
  96. public void CanParseSensorAlias()
  97. {
  98. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/rename.config" };
  99. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  100. var customConfig = new CustomConfig(config);
  101. var results = MetricConfig.ParseAppSettings(customConfig);
  102. Assert.True(results.TryGetAlias("/amdcpu/0/load/1", out string alias));
  103. Assert.Equal("CPU Core 0 T0", alias);
  104. Assert.True(results.TryGetAlias("/amdcpu/0/load/2", out alias));
  105. Assert.Equal("CPU Core 0 T1", alias);
  106. Assert.False(results.TryGetAlias("/amdcpu/0/load/3", out alias));
  107. }
  108. [Fact]
  109. public void CanParseHiddenSensors()
  110. {
  111. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/hidden-sensors.config" };
  112. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  113. var customConfig = new CustomConfig(config);
  114. var results = MetricConfig.ParseAppSettings(customConfig);
  115. Assert.True(results.IsHidden("/amdcpu/0/load/1"));
  116. Assert.True(results.IsHidden("/amdcpu/0/load/2"));
  117. Assert.False(results.IsHidden("/amdcpu/0/load/3"));
  118. Assert.True(results.IsHidden("/amdcpu/0/clock/1"));
  119. Assert.True(results.IsHidden("/amdcpu/1/clock/100"));
  120. Assert.True(results.IsHidden("/amdcpu/0/power/1"));
  121. Assert.True(results.IsHidden("/nvidia-gpu/0/power/1"));
  122. Assert.False(results.IsHidden("/nvme/0/factor/power_cycles"));
  123. Assert.False(results.EnabledHardware.Cpu);
  124. }
  125. [Fact]
  126. public void CanInstallCertificateVerification()
  127. {
  128. var current = ServicePointManager.ServerCertificateValidationCallback;
  129. MetricConfig.InstallCertificateVerification("true");
  130. Assert.Equal(current, ServicePointManager.ServerCertificateValidationCallback);
  131. MetricConfig.InstallCertificateVerification("false");
  132. Assert.NotEqual(current, ServicePointManager.ServerCertificateValidationCallback);
  133. MetricConfig.InstallCertificateVerification("assets/influxdb-selfsigned.crt");
  134. Assert.NotEqual(current, ServicePointManager.ServerCertificateValidationCallback);
  135. ServicePointManager.ServerCertificateValidationCallback = null;
  136. }
  137. }
  138. }