private static void ConfigurationThreadTest(Action<DbConfigurationManager> beforeThreads, Action<DbConfigurationManager> inThreads) { for (var i = 0; i < 30; i++) { var configurationBag = new ConcurrentBag<DbConfiguration>(); var manager = new DbConfigurationManager(new DbConfigurationLoader(), new DbConfigurationFinder()); beforeThreads(manager); ExecuteInParallel( () => { inThreads(manager); configurationBag.Add(manager.GetConfiguration()); }); Assert.Equal(20, configurationBag.Count); Assert.True(configurationBag.All(c => manager.GetConfiguration() == c)); } }
public void Configurations_can_be_pushed_and_popped_from_multiple_threads_concurrently() { for (var i = 0; i < 30; i++) { var manager = new DbConfigurationManager(new DbConfigurationLoader(), new DbConfigurationFinder()); var config = manager.GetConfiguration(); ExecuteInParallel( () => { var appConfig = new AppConfig(new ConnectionStringSettingsCollection()); manager.PushConfiguration(appConfig, typeof(SimpleModelContext)); manager.PopConfiguration(appConfig); }); Assert.Same(config, manager.GetConfiguration()); } }
private static void ConfigurationThreadTest(Action <DbConfigurationManager> beforeThreads, Action <DbConfigurationManager> inThreads) { for (var i = 0; i < 30; i++) { var configurationBag = new ConcurrentBag <InternalConfiguration>(); var manager = new DbConfigurationManager(new DbConfigurationLoader(), new DbConfigurationFinder()); manager.SetConfiguration(new FunctionalTestsConfiguration().InternalConfiguration); beforeThreads(manager); ExecuteInParallel( () => { inThreads(manager); configurationBag.Add(manager.GetConfiguration()); }); Assert.Equal(20, configurationBag.Count); Assert.True(configurationBag.All(c => manager.GetConfiguration() == c)); } }