Exemple #1
0
 private static void WriteConfigFile(string file, TestServiceConfig data)
 {
     using (var fileWriter = new StreamWriter(File.OpenWrite(file)))
     {
         var serializer = new Newtonsoft.Json.JsonSerializer();
         serializer.Serialize(fileWriter, data);
         fileWriter.Flush();
     }
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }