public QueryTemperatureResponse(CorrelationId correlationID, SensorIdentifier sensorId, double temperature, DateTime readingTime) { SensorId = sensorId; CorrelationId = correlationID; Temperature = temperature; ReadingTime = readingTime; }
public void AfterAllTemperaturesRecordedShouldRespondWithResult() { var temperatureSource = CreateTestProbe("TemperatureSource"); var replyTo = CreateTestProbe("ReplyTo"); var evaluate = CreateEvaluate(temperatureSource, replyTo); SensorIdentifier id1 = new SensorIdentifier(1); SensorIdentifier id2 = new SensorIdentifier(2); var sensor1 = CreateTestProbe("sensor1"); var sensor2 = CreateTestProbe("sensor2"); var sensors = new Dictionary <SensorIdentifier, IActorRef> { { id1, sensor1 }, { id2, sensor2 } }; evaluate.Tell(new GetAllSensorsResponse(new CorrelationId(), sensors.ToImmutableDictionary())); evaluate.Tell(new QueryTemperatureResponse(new CorrelationId(), id1, 100, DateTime.Now)); evaluate.Tell(new QueryTemperatureResponse(new CorrelationId(), id2, 100, DateTime.Now)); var received = replyTo.ExpectMsg <SafetyEvaluationResult>(); received.RequiresNotification.Should().BeFalse(); received.Message.Should().BeEmpty(); }
public void WhenTemperatureGreaterThan200ShouldRespondWithResult() { var temperatureSource = CreateTestProbe("TemperatureSource"); var replyTo = CreateTestProbe("ReplyTo"); var evaluate = CreateEvaluate(temperatureSource, replyTo); SensorIdentifier id1 = new SensorIdentifier(1); SensorIdentifier id2 = new SensorIdentifier(2); var sensor1 = CreateTestProbe("sensor1"); var sensor2 = CreateTestProbe("sensor2"); var sensors = new Dictionary <SensorIdentifier, IActorRef> { { id1, sensor1 }, { id2, sensor2 } }; evaluate.Tell(new GetAllSensorsResponse(new CorrelationId(), sensors.ToImmutableDictionary())); evaluate.Tell(new QueryTemperatureResponse(new CorrelationId(), id1, 250, DateTime.Now)); evaluate.Tell(new QueryTemperatureResponse(new CorrelationId(), id2, 100, DateTime.Now)); var received = replyTo.ExpectMsg <SafetyEvaluationResult>(); received.RequiresNotification.Should().BeTrue(); received.Message.Should().Be("Temperature exceeds 200 degrees"); received.Temperatures.Should().HaveCount(2); received.Temperatures[id1].Value.Should().Be(250); received.Temperatures[id2].Value.Should().Be(100); }
private IActorRef CreateTestSensor(SensorIdentifier sensorIdentifier = null) { if (sensorIdentifier is null) { sensorIdentifier = new SensorIdentifier(1); } return(Sys.ActorOf(TemperatureSensorActor.Props(sensorIdentifier))); }
protected IActorRef AddSensorToArea(IActorRef area, SensorIdentifier sensorId) { var probe = CreateTestProbe(); area.Tell(new AddSensorRequest(new CorrelationId(), sensorId), probe); IActorRef addedSensor = null; probe.ExpectMsg <AddSensorResponse>(response => addedSensor = response.TemperatureSensor); return(addedSensor); }
ShortSensor ISdrnsController.GetShortSensor(SensorIdentifier sensorId, CommonOperationArguments otherArgs) { var result = Operation <SdrnsControllerAppService.GetShortSensorAppOperation, ShortSensor>() .Invoke( new GetShortSensorAppOperationOptions { SensorId = sensorId, OtherArgs = otherArgs }, this.OperationContext ); return(result); }
public void ShouldSubscribeToChanges() { var probe = CreateTestProbe(); SensorIdentifier expectedIdentifier = new SensorIdentifier(23); var sensor = CreateTestSensor(expectedIdentifier); CorrelationId expectedCorrelationId = new CorrelationId(); sensor.Tell(new SubscribeToUpdatesRequest(expectedCorrelationId), probe.Ref); var received = probe.ExpectMsg <SubscribeToUpdatesResponse>(); received.CorrelationId.Should().Be(expectedCorrelationId); }
public void ShouldAddNewSensorWhenNotPreviouslyAdded() { var probe = CreateTestProbe(); var area = CreateTestArea("North"); CorrelationId correlationId = new CorrelationId(); SensorIdentifier sensorId = new SensorIdentifier(2); area.Tell(new AddSensorRequest(correlationId, sensorId), probe.Ref); var received = probe.ExpectMsg <AddSensorResponse>(); received.CorrelationId.Should().Be(correlationId); received.TemperatureSensor.Should().NotBeNull(); }
public void ShouldReturnExistingSensorWhenPreviouslyAdded() { var probe = CreateTestProbe(); var area = CreateTestArea("North"); SensorIdentifier sensorId = new SensorIdentifier(2); area.Tell(new AddSensorRequest(new CorrelationId(), sensorId), probe.Ref); var received = probe.ExpectMsg <AddSensorResponse>(); IActorRef sensor = received.TemperatureSensor; area.Tell(new AddSensorRequest(new CorrelationId(), sensorId), probe.Ref); received = probe.ExpectMsg <AddSensorResponse>(); received.TemperatureSensor.Should().Be(sensor); }
public void ShouldQueryIdentification() { var probe = CreateTestProbe(); SensorIdentifier expectedIdentifier = new SensorIdentifier(23); var sensor = CreateTestSensor(expectedIdentifier); CorrelationId expectedCorrelationId = new CorrelationId(); sensor.Tell(new SensorIdentificationRequest(expectedCorrelationId), probe.Ref); var received = probe.ExpectMsg <SensorIdentificationResponse>(); received.CorrelationId.Should().Be(expectedCorrelationId); received.SensorIdentifier.Should().Be(expectedIdentifier); }
public void AfterSubscriptionShouldReceiveUpdates() { var probe = CreateTestProbe(); SensorIdentifier expectedIdentifier = new SensorIdentifier(1234); var sensor = CreateTestSensor(expectedIdentifier); double expectedTemperature = 100.2; DateTime expectedReadingTime = DateTime.Now; sensor.Tell(new SubscribeToUpdatesRequest(new CorrelationId()), probe); probe.ExpectMsg <SubscribeToUpdatesResponse>(); sensor.Tell(new UpdateTemperatureRequest(new CorrelationId(), expectedTemperature, expectedReadingTime)); var received = probe.ExpectMsg <TemperatureUpdated>(); received.SensorId.Should().Be(expectedIdentifier); received.Temperature.Should().Be(expectedTemperature); received.ReadingTime.Should().Be(expectedReadingTime); }
public void ShouldQueryTemperature() { var probe = CreateTestProbe(); SensorIdentifier expectedIdentifier = new SensorIdentifier(23); var sensor = CreateTestSensor(expectedIdentifier); CorrelationId expectedCorrelationId = new CorrelationId(); double expectedTemperature = 98.4; DateTime expectedReadingTime = DateTime.Now; sensor.Tell(new UpdateTemperatureRequest(new CorrelationId(), expectedTemperature, expectedReadingTime)); sensor.Tell(new QueryTemperatureRequest(expectedCorrelationId), probe.Ref); var received = probe.ExpectMsg <QueryTemperatureResponse>(); received.CorrelationId.Should().Be(expectedCorrelationId); received.SensorId.Should().Be(expectedIdentifier); received.Temperature.Should().Be(98.4); received.ReadingTime.Should().Be(expectedReadingTime); }
public void AfterSubscriptionShouldReceiveTemperatureUpdates() { var probe = CreateTestProbe(); var area = CreateTestArea("North"); SensorIdentifier sensorId = new SensorIdentifier(2); area.Tell(new AddSensorRequest(new CorrelationId(), sensorId), probe.Ref); IActorRef sensor = probe.ExpectMsg <AddSensorResponse>().TemperatureSensor; area.Tell(new SubscribeToUpdatesRequest(new CorrelationId()), probe.Ref); probe.ExpectMsg <SubscribeToUpdatesResponse>(); double expectedTemperature = 98.4; DateTime expectedReadingTime = DateTime.Now; sensor.Tell(new UpdateTemperatureRequest(new CorrelationId(), expectedTemperature, expectedReadingTime)); var received = probe.ExpectMsg <TemperatureUpdated>(); received.SensorId.Should().Be(sensorId); received.Temperature.Should().Be(expectedTemperature); received.ReadingTime.Should().Be(expectedReadingTime); }
public SensorIdentificationResponse(CorrelationId correlationId, SensorIdentifier sensorIdentifier) { CorrelationId = correlationId; SensorIdentifier = sensorIdentifier; }
public static Props Props(SensorIdentifier id) => Akka.Actor.Props.Create(() => new TemperatureSensorActor(id));
public AddSensorRequest(CorrelationId correlationId, SensorIdentifier sensorId) { CorrelationId = correlationId; SensorId = sensorId; }
public TemperatureUpdated(SensorIdentifier sensorId, double temperature, DateTime readingTime) { SensorId = sensorId; Temperature = temperature; ReadingTime = readingTime; }
public TemperatureSensorActor(SensorIdentifier id) { _id = id; _subscribers = new HashSet <IActorRef>(); }