public void TestConfigFileProviderSerialization() { //Create JSON var data = new TestServiceConfig { TestServiceAConfig = new TestServiceAConfig() { A = "AAA" }, TestServiceBConfig = new TestServiceBConfig() { B = "BBB" }, TestServiceCConfig = new TestServiceCConfig() { C = "CCC" } }; var r = new ConfigFileProvider <TestServiceConfig>(Fixture.LoggerFactory); using (var mStream = new MemoryStream()) { var writer = new StreamWriter(mStream, Encoding.UTF8); var serializer = new Newtonsoft.Json.JsonSerializer(); //serializer.Converters.Add(new ConfigInterfaceJsonConverter()); //serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; serializer.Serialize(writer, data); writer.Flush(); mStream.Position = 0; var reader = new StreamReader(mStream, Encoding.UTF8); r.ReadConfig(reader); Assert.NotNull(r.Get()); Assert.Equal(data.TestServiceAConfig.A, r.Get().TestServiceAConfig.A); Assert.Equal(data.TestServiceBConfig.B, r.Get().TestServiceBConfig.B); Assert.Equal(data.TestServiceCConfig.C, r.Get().TestServiceCConfig.C); } }
public void TestConfigFileReaderAndFileWatcher() { var file = Path.Combine(Fixture.ContentRoot, "config", $"{Guid.NewGuid()}.json"); //Create JSON var data = new TestServiceConfig { TestServiceAConfig = new TestServiceAConfig() { A = "AAA" }, TestServiceBConfig = new TestServiceBConfig() { B = "BBB" }, TestServiceCConfig = new TestServiceCConfig() { C = "CCC" } }; WriteConfigFile(file, data); var provider = new ConfigFileProvider <TestServiceConfig>(Fixture.LoggerFactory, file); Assert.NotNull(provider.Get()); Assert.Equal(data.TestServiceAConfig.A, provider.Get().TestServiceAConfig.A); Assert.Equal(data.TestServiceBConfig.B, provider.Get().TestServiceBConfig.B); Assert.Equal(data.TestServiceCConfig.C, provider.Get().TestServiceCConfig.C); var configChangeEventTriggered = 0; //Now: Register Change listener and edit the file. provider.ConfigChangedEvent += (sender, args) => { configChangeEventTriggered++; Assert.NotNull(args.NewValue); Assert.NotEqual("AAA", provider.Get().TestServiceAConfig.A); Assert.Equal("BBB", provider.Get().TestServiceBConfig.B); Assert.Equal("CCC", provider.Get().TestServiceCConfig.C); }; data.TestServiceAConfig.A = "foo"; WriteConfigFile(file, data); var maxIter = 0; while (configChangeEventTriggered == 0 && maxIter < 20) { maxIter++; Thread.Sleep(500); } Assert.Equal(1, configChangeEventTriggered); }