static void Main(string[] args) { Console.OutputEncoding = System.Text.Encoding.UTF8; var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var configurationBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: true) .AddJsonFile("appsettings.secrets.json", optional: true) .AddEnvironmentVariables(); var config = configurationBuilder.Build(); eventPublisher = new EventPublisher(config); var timerState = new ProducerState { Counter = 0 }; //Create a timer for producing the orders orderTimer = new Timer( callback: new TimerCallback(CreateOrder), state: timerState, dueTime: 1000, period: 2000); Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}: done."); CreateHostBuilder(args).Build().Run(); }
public void TestProducerState() { ProducerState state = new ProducerState(CreateProducerInfo(1)); Assert.IsNotNull(state.Info); Assert.AreEqual(1, state.Info.ProducerId.Value); state.TransactionState = CreateTXState(1); Assert.IsNotNull(state.TransactionState); }
public void SetState_GivenNewState_ShouldReturnFormerState(ProducerState initialState, ProducerState newState, ProducerState expected) { //Arrange var sut = new StateManager <ProducerState>(initialState, ProducerState.Closed); //Act var actual = sut.SetState(newState); //Assert actual.Should().Be(expected); }
public void StateChangedFrom_GivenStateIsFinal_ShouldCompleteTask(ProducerState state) { //Arrange var sut = new StateManager <ProducerState>(ProducerState.Closed, ProducerState.Closed); //Act var task = sut.StateChangedFrom(state, default); //Assert task.IsCompleted.Should().BeTrue(); }
public void StateChangedFrom_GivenStateHasChanged_ShouldCompleteTask(ProducerState initialState, ProducerState fromState) { //Arrange var sut = new StateManager <ProducerState>(initialState, ProducerState.Closed); //Act var task = sut.StateChangedFrom(fromState, default); //Assert task.IsCompleted.Should().BeTrue(); }
public void StateChangedFrom_GivenStateHasNotChanged_ShouldNotCompleteTask(ProducerState state) { //Arrange var sut = new StateManager <ProducerState>(state, ProducerState.Closed); //Act var task = sut.StateChangedFrom(state, default); //Assert task.IsCompleted.Should().BeFalse(); }
public void StateChangedTo_GivenStateIsNotWanted_ShouldNotCompleteTask(ProducerState initialState, ProducerState wantedState) { //Arrange var sut = new StateManager <ProducerState>(initialState, ProducerState.Closed); //Act var task = sut.StateChangedTo(wantedState, default); //Assert task.IsCompleted.Should().BeFalse(); }
public void StateChangedTo_GivenStateIsAlreadyWanted_ShouldCompleteTask(ProducerState state) { //Arrange var sut = new StateManager <ProducerState>(state, ProducerState.Closed); //Act var task = sut.StateChangedTo(state, default); //Assert Assert.True(task.IsCompleted); }
public void SetState_GivenStateIsFinal_ShouldNotChangeState(ProducerState newState) { //Arrange var sut = new StateManager <ProducerState>(ProducerState.Closed, ProducerState.Closed); //Act _ = sut.SetState(newState); //Assert sut.CurrentState.Should().Be(ProducerState.Closed); }
public void SetState_GivenStateIsChangedToWanted_ShouldCompleteTask(ProducerState initialState, ProducerState newState) { //Arrange var sut = new StateManager <ProducerState>(initialState, ProducerState.Closed); var task = sut.StateChangedTo(newState, default); //Act _ = sut.SetState(newState); //Assert task.IsCompleted.Should().BeTrue(); }
public void SetState_GivenStateIsChangedToNotWanted_ShouldNotCompleteTask(ProducerState initialState, ProducerState newState, ProducerState wantedState) { //Arrange var sut = new StateManager <ProducerState>(initialState, ProducerState.Closed); //Act var task = sut.StateChangedTo(wantedState, default); _ = sut.SetState(newState); //Assert Assert.False(task.IsCompleted); }
public async ValueTask <ProducerState> OnStateChangeFrom(ProducerState state, CancellationToken cancellationToken) => await _state.StateChangedFrom(state, cancellationToken).ConfigureAwait(false);
public async ValueTask <ProducerState> StateChangedFrom(ProducerState state, CancellationToken cancellationToken) => await _stateManager.StateChangedFrom(state, cancellationToken);
/// <summary> /// Wait for the state to change from a specific state. /// </summary> /// <returns> /// The current state. /// </returns> /// <remarks> /// If the state change to a final state, then all awaiting tasks will complete. /// </remarks> public static async ValueTask <ProducerStateChanged> StateChangedFrom(this IProducer producer, ProducerState state, CancellationToken cancellationToken = default) { var newState = await producer.OnStateChangeFrom(state, cancellationToken).ConfigureAwait(false); return(new ProducerStateChanged(producer, newState)); }
internal ProducerStateChanged(IProducer producer, ProducerState producerState) { Producer = producer; ProducerState = producerState; }
public async ValueTask <ProducerStateChanged> StateChangedFrom(ProducerState state, CancellationToken cancellationToken) { var newState = await _state.StateChangedFrom(state, cancellationToken).ConfigureAwait(false); return(new ProducerStateChanged(this, newState)); }
private object GetModuleState(int moduleId) { object moduleState; switch (moduleId) { case 1: moduleState = new ProducerState(new ProductionSource(new Commodity("GRAIN1", "Grain", UnitOfMeasurement.Kilogram, 0.001, false), 0.5, 1000)); break; case 2: moduleState = new FarmingCollectiveState(GetCollective(1)); break; case 3: moduleState = new ProducerState(new ProductionSource(new Commodity("POTAT1", "Potatoes", UnitOfMeasurement.Kilogram, 0.00075, false), 0.55, 1000)); break; case 4: moduleState = new FarmingCollectiveState(GetCollective(2)); break; default: moduleState = null; break; } return moduleState; //return new ProducerState(new ProductionSource(new Commodity("GRAIN1", "Grain", UnitOfWeightMeasurement.Kilogram, 0.001, false), 0.5, 1000)); }
public bool IsFinalState(ProducerState state) => _state.IsFinalState(state);
public async ValueTask <ProducerState> StateChangedTo(ProducerState state, CancellationToken cancellationToken) => await _state.StateChangedTo(state, cancellationToken);