public async Task Should_stop_all_applications() { vostokMultiHost = new VostokMultiHost(new VostokMultiHostSettings(SetupMultiHost)); var applications = new List <VostokMultiHostApplicationSettings>(); for (var i = 0; i < 10; i++) { applications.Add( new VostokMultiHostApplicationSettings( new NeverEndingApplication(), ("test", i.ToString()), SetupMultiHostApplication)); } foreach (var app in applications) { vostokMultiHost.AddApplication(app); } await vostokMultiHost.StartAsync(); await Task.Delay(1000); await vostokMultiHost.StopAsync(); foreach (var app in applications) { // ReSharper disable once PossibleNullReferenceException vostokMultiHost.GetApplication(app.Identifier).ApplicationState.IsTerminal().Should().BeTrue(); } }
public async Task Start_should_wait_until_given_state_occurs(VostokApplicationState stateToAwait) { var identifier = ("test", "test"); var workerApplication = new VostokMultiHostApplicationSettings(new NeverEndingApplication(), identifier, SetupMultiHostApplication); vostokMultiHost = new VostokMultiHost(new VostokMultiHostSettings(SetupMultiHost), workerApplication); await vostokMultiHost.StartAsync(); await vostokMultiHost.GetApplication(identifier).StartAsync(stateToAwait); vostokMultiHost.GetApplication(identifier).ApplicationState.Should().Match <VostokApplicationState>(state => state >= stateToAwait); await vostokMultiHost.StopApplicationAsync(identifier); vostokMultiHost.GetApplication(identifier).ApplicationState.IsTerminal().Should().BeTrue(); await vostokMultiHost.StopAsync(); }
public async Task Start_should_not_throw_on_run_failed() { await SetupAndStartMultiHost(); var identifier = ("test", "test"); var badApplication = new VostokMultiHostApplicationSettings(new BadApplication(false), identifier, SetupMultiHostApplication); Action checkStart = () => vostokMultiHost.StartApplicationAsync(badApplication).GetAwaiter().GetResult(); checkStart.Should().NotThrow <Exception>(); var application = vostokMultiHost.GetApplication(identifier); AssertionAssertions.ShouldPassIn(() => { application.ApplicationState.IsTerminal().Should().BeTrue(); }, 10.Seconds()); Action checkStop = () => vostokMultiHost.StopApplicationAsync(identifier).GetAwaiter().GetResult(); checkStop.Should().Throw <Exception>().WithMessage("run"); }