public void RemovedSectionGetsNotificationOnRemovalAndDoesNotGetFurtherNotifications() { ConfigurationChangeSqlWatcher.SetDefaultPollDelayInMilliseconds(100); SqlConfigurationSourceImplementation implementation = new SqlConfigurationSourceImplementation(this.data, false); object section1 = implementation.GetSection(localSection); Assert.IsNotNull(section1); object section2 = implementation.GetSection(localSection2); Assert.IsNotNull(section2); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection2, new ConfigurationChangedEventHandler(OnConfigurationChanged)); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); rwConfiguration.Save(ConfigurationSaveMode.Minimal, true); // config source changed notifies both sections implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(1, updatedSectionsTally[localSection]); Assert.AreEqual(1, updatedSectionsTally[localSection2]); rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); implementation.RemoveSection(localSection2); //since localsection2 is removed, localsection2 only gets initial notification Assert.AreEqual(2, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); }
public void WatchedExistingSectionIsNoLongerWatchedIfRemovedFromConfiguration() { SqlConfigurationSourceImplementation implementation = new SqlConfigurationSourceImplementation(this.data, false); DummySection dummySection1 = implementation.GetSection(localSection) as DummySection; DummySection dummySection2 = implementation.GetSection(localSection2) as DummySection; Assert.IsNotNull(dummySection1); Assert.IsNotNull(dummySection2); Assert.AreEqual(1, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(externalSectionSource)); Assert.AreEqual(2, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.IsTrue(implementation.WatchedSections.Contains(localSection2)); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); implementation.RemoveSection(localSection2); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(2, implementation.WatchedConfigSources.Count); Assert.IsTrue(implementation.WatchedConfigSources.Contains(externalSectionSource)); Assert.IsTrue(implementation.WatchedConfigSources.Contains(SqlConfigurationSourceImplementation.NullConfigSource)); Assert.AreEqual(1, implementation.WatchedSections.Count); Assert.IsTrue(implementation.WatchedSections.Contains(localSection)); Assert.AreEqual(1, implementation.ConfigSourceWatcherMappings[string.Empty].WatchedSections.Count); Assert.IsTrue(implementation.ConfigSourceWatcherMappings[string.Empty].WatchedSections.Contains(localSection)); Assert.AreEqual(1, implementation.ConfigSourceWatcherMappings[SqlConfigurationSourceImplementation.NullConfigSource].WatchedSections.Count); }
public void RestoredSectionGetsNotificationOnRestoreAndGetsFurtherNotifications() { SqlConfigurationSourceImplementation implementation = new SqlConfigurationSourceImplementation(this.data, false); object section1 = implementation.GetSection(localSection); Assert.IsNotNull(section1); object section2 = implementation.GetSection(localSection2); Assert.IsNotNull(section2); implementation.AddSectionChangeHandler(localSection, new ConfigurationChangedEventHandler(OnConfigurationChanged)); implementation.AddSectionChangeHandler(localSection2, new ConfigurationChangedEventHandler(OnConfigurationChanged)); System.Configuration.Configuration rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(1, updatedSectionsTally[localSection]); Assert.AreEqual(1, updatedSectionsTally[localSection2]); // removal of the section notifies both sections rwConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); implementation.RemoveSection(localSection2); Assert.AreEqual(2, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(3, updatedSectionsTally[localSection]); Assert.AreEqual(2, updatedSectionsTally[localSection2]); // restore of section gets notified DummySection rwSection = new DummySection(); rwSection.Name = localSection2; rwSection.Value = 30; rwSection.SectionInformation.ConfigSource = externalSectionSource; implementation.SaveSection(rwSection.Name, rwSection); implementation.ConfigSourceChanged(externalSectionSource); Assert.AreEqual(4, updatedSectionsTally[localSection]); Assert.AreEqual(3, updatedSectionsTally[localSection2]); }