ConfigTest.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System;
  2. using System.Configuration;
  3. using Xunit;
  4. namespace OhmGraphite.Test
  5. {
  6. public class ConfigTest
  7. {
  8. [Fact]
  9. public void CanParseGraphiteConfig()
  10. {
  11. var configMap = new ExeConfigurationFileMap {ExeConfigFilename = "assets/graphite.config"};
  12. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  13. var customConfig = new CustomConfig(config);
  14. var results = MetricConfig.ParseAppSettings(customConfig);
  15. Assert.NotNull(results.Graphite);
  16. Assert.Null(results.Influx);
  17. Assert.Equal("myhost", results.Graphite.Host);
  18. Assert.Equal(2004, results.Graphite.Port);
  19. Assert.Equal(TimeSpan.FromSeconds(6), results.Interval);
  20. Assert.True(results.Graphite.Tags);
  21. }
  22. [Fact]
  23. public void CanParseNullConfig()
  24. {
  25. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/default.config" };
  26. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  27. var customConfig = new CustomConfig(config);
  28. var results = MetricConfig.ParseAppSettings(customConfig);
  29. Assert.NotNull(results.Graphite);
  30. Assert.Null(results.Influx);
  31. Assert.Equal("localhost", results.Graphite.Host);
  32. Assert.Equal(2003, results.Graphite.Port);
  33. Assert.Equal(TimeSpan.FromSeconds(5), results.Interval);
  34. Assert.False(results.Graphite.Tags);
  35. }
  36. [Fact]
  37. public void CanParseInfluxDbConfig()
  38. {
  39. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/influx.config" };
  40. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  41. var customConfig = new CustomConfig(config);
  42. var results = MetricConfig.ParseAppSettings(customConfig);
  43. Assert.Null(results.Graphite);
  44. Assert.NotNull(results.Influx);
  45. Assert.Equal(TimeSpan.FromSeconds(6), results.Interval);
  46. Assert.Equal("http://192.168.1.15:8086/", results.Influx.Address.ToString());
  47. Assert.Equal("mydb", results.Influx.Db);
  48. Assert.Equal("my_user", results.Influx.User);
  49. Assert.Equal("my_pass", results.Influx.Password);
  50. }
  51. [Fact]
  52. public void CanParsePrometheusConfig()
  53. {
  54. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/prometheus.config" };
  55. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  56. var customConfig = new CustomConfig(config);
  57. var results = MetricConfig.ParseAppSettings(customConfig);
  58. Assert.Null(results.Graphite);
  59. Assert.Null(results.Influx);
  60. Assert.NotNull(results.Prometheus);
  61. Assert.Equal(4446, results.Prometheus.Port);
  62. Assert.Equal("127.0.0.1", results.Prometheus.Host);
  63. }
  64. [Fact]
  65. public void CanParseTimescaleConfig()
  66. {
  67. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/timescale.config" };
  68. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  69. var customConfig = new CustomConfig(config);
  70. var results = MetricConfig.ParseAppSettings(customConfig);
  71. Assert.Null(results.Graphite);
  72. Assert.Null(results.Influx);
  73. Assert.Null(results.Prometheus);
  74. Assert.NotNull(results.Timescale);
  75. Assert.Equal("Host=vm-ubuntu;Username=ohm;Password=123456", results.Timescale.Connection);
  76. Assert.False(results.Timescale.SetupTable);
  77. }
  78. [Fact]
  79. public void CanParseStaticResolutionName()
  80. {
  81. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/static-name.config" };
  82. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  83. var customConfig = new CustomConfig(config);
  84. var results = MetricConfig.ParseAppSettings(customConfig);
  85. Assert.Equal("my-cool-machine", results.LookupName());
  86. }
  87. [Fact]
  88. public void CanParseSensorAlias()
  89. {
  90. var configMap = new ExeConfigurationFileMap { ExeConfigFilename = "assets/rename.config" };
  91. var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
  92. var customConfig = new CustomConfig(config);
  93. var results = MetricConfig.ParseAppSettings(customConfig);
  94. Assert.True(results.TryGetAlias("/amdcpu/0/load/1", out string alias));
  95. Assert.Equal("CPU Core 0 T0", alias);
  96. Assert.True(results.TryGetAlias("/amdcpu/0/load/2", out alias));
  97. Assert.Equal("CPU Core 0 T1", alias);
  98. Assert.False(results.TryGetAlias("/amdcpu/0/load/3", out alias));
  99. }
  100. }
  101. }