public void Start_should_wait_until_given_state_occurs(VostokApplicationState stateToAwait) { application = new Application(); host = new VostokHost(new TestHostSettings(application, SetupEnvironment)); host.Start(stateToAwait); host.ApplicationState.Should().Match <VostokApplicationState>(state => state >= stateToAwait); host.Stop(); host.ApplicationState.IsTerminal().Should().BeTrue(); }
private void ChangeStateTo(VostokApplicationState newState, Exception error = null) { ApplicationState = newState; onApplicationStateChanged.Next(newState); if (error != null) { onApplicationStateChanged.Error(error); } else if (newState.IsTerminal()) { onApplicationStateChanged.Complete(); } }
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(); }
private VostokApplicationRunResult ReturnResult(VostokApplicationState newState, Exception error = null) { ChangeStateTo(newState, error); return(new VostokApplicationRunResult(newState, error)); }
public VostokApplicationRunResult(VostokApplicationState state, [CanBeNull] Exception error = null) { State = state; Error = error; }
/// <inheritdoc cref="VostokHost.StartAsync"/> public static void Start([NotNull] this VostokHost vostokHost, VostokApplicationState stateToAwait) => vostokHost.StartAsync(stateToAwait).GetAwaiter().GetResult();
/// <summary> /// Returns whether given <paramref name="state"/> is terminal (a final state of the <see cref="VostokHost"/>. /// </summary> public static bool IsTerminal(this VostokApplicationState state) => TerminalStates.Contains(state);