public async Task RefreshThenStopAndRestartWithMixedBeans() { var startedBeans = new ConcurrentQueue <ILifecycle>(); var simpleBean1 = TestLifecycleBean.ForStartupTests(startedBeans); var simpleBean2 = TestLifecycleBean.ForStartupTests(startedBeans); var smartBean1 = TestSmartLifecycleBean.ForStartupTests(5, startedBeans); var smartBean2 = TestSmartLifecycleBean.ForStartupTests(-3, startedBeans); var processor = new DefaultLifecycleProcessor(CreateApplicationContext(new List <ILifecycle>() { simpleBean1, simpleBean2, smartBean1, smartBean2 }, new List <ISmartLifecycle>())); Assert.False(simpleBean1.IsRunning); Assert.False(simpleBean2.IsRunning); Assert.False(smartBean1.IsRunning); Assert.False(smartBean2.IsRunning); await processor.OnRefresh(); Assert.False(simpleBean1.IsRunning); Assert.False(simpleBean2.IsRunning); Assert.True(smartBean1.IsRunning); Assert.True(smartBean2.IsRunning); Assert.Equal(2, startedBeans.Count); var started = startedBeans.ToArray(); Assert.Equal(-3, GetPhase(started[0])); Assert.Equal(5, GetPhase(started[1])); await processor.Stop(); Assert.False(simpleBean1.IsRunning); Assert.False(simpleBean2.IsRunning); Assert.False(smartBean1.IsRunning); Assert.False(smartBean2.IsRunning); await processor.Start(); Assert.True(simpleBean1.IsRunning); Assert.True(simpleBean2.IsRunning); Assert.True(smartBean1.IsRunning); Assert.True(smartBean2.IsRunning); Assert.Equal(6, startedBeans.Count); started = startedBeans.ToArray(); Assert.Equal(-3, GetPhase(started[2])); Assert.Equal(0, GetPhase(started[3])); Assert.Equal(0, GetPhase(started[4])); Assert.Equal(5, GetPhase(started[5])); }
public async Task SingleSmartLifecycleWithoutAutoStartup() { var startedBeans = new ConcurrentQueue <ILifecycle>(); var bean = TestSmartLifecycleBean.ForStartupTests(1, startedBeans); bean.IsAutoStartup = false; var processor = new DefaultLifecycleProcessor(CreateApplicationContext(new List <ILifecycle>() { bean }, new List <ISmartLifecycle>())); Assert.False(bean.IsRunning); await processor.OnRefresh(); Assert.False(bean.IsRunning); Assert.Empty(startedBeans); await processor.Start(); Assert.True(bean.IsRunning); Assert.Single(startedBeans); await processor.Stop(); }
public async Task SingleLifecycleShutdown() { var stoppedBeans = new ConcurrentQueue <ILifecycle>(); ILifecycle bean = new TestLifecycleBean(null, stoppedBeans); var processor = new DefaultLifecycleProcessor(CreateApplicationContext(new List <ILifecycle>() { bean }, new List <ISmartLifecycle>())); Assert.False(bean.IsRunning); await processor.OnRefresh(); Assert.False(bean.IsRunning); await processor.Start(); Assert.True(bean.IsRunning); await processor.Stop(); var stopped = stoppedBeans.ToArray(); Assert.False(bean.IsRunning); Assert.Same(bean, stopped[0]); }