コード例 #1
0
        public void Must_be_able_to_collect_temperatures_from_all_active_devices()
        {
            var prob    = CreateTestProbe();
            var groupId = "TestGroup";

            var deviceGroupActor = Sys.ActorOf(DeviceGroupActor.Prop(groupId));

            deviceGroupActor.Tell(new RequestTrackDevice(groupId, "device1"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>();
            var device1 = prob.LastSender;

            deviceGroupActor.Tell(new RequestTrackDevice(groupId, "device2"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>();
            var device2 = prob.LastSender;

            deviceGroupActor.Tell(new RequestTrackDevice(groupId, "device3"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>();
            var device3 = prob.LastSender;

            device1.Tell(new RecordTemperature(requestId: 1, 1.0), prob.Ref);
            prob.ExpectMsg <TemperatureRecorded>(msg => msg.RequestId == 1);

            device2.Tell(new RecordTemperature(requestId: 2, 2.0), prob.Ref);
            prob.ExpectMsg <TemperatureRecorded>(msg => msg.RequestId == 2);

            deviceGroupActor.Tell(new RequestAllTemperatures(4), prob.Ref);

            prob.ExpectMsg <RespondAllTemperatures>(msg =>
                                                    msg.RequestId == 4 &&
                                                    msg.Temperatures["device1"].AsInstanceOf <Temperature>().Value == 1.0 &&
                                                    msg.Temperatures["device2"].AsInstanceOf <Temperature>().Value == 2.0 &&
                                                    msg.Temperatures["device3"] is TemperatureNotAvailable
                                                    );
        }
コード例 #2
0
        static void Main(string[] args)
        {
            using var sys = ActorSystem.Create("TestAkka");
            var groupName  = "MyGroupId";
            var firstActor = sys.ActorOf(DeviceGroupActor.Prop(groupName), $"DeviceGroupActor-{groupName}");

            firstActor.Tell(new RequestTrackDevice(groupName, "FirstDevice"), firstActor);
            Console.WriteLine($"First: {firstActor}");
            sys.WhenTerminated.Wait();
        }
コード例 #3
0
        public void RequestTrackDevice_With_Same_DeviceId()
        {
            var prob             = CreateTestProbe();
            var deviceGroupActor = Sys.ActorOf(DeviceGroupActor.Prop("TestGroup"));

            deviceGroupActor.Tell(new RequestTrackDevice("TestGroup", "DeviceId1"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>(TimeSpan.FromSeconds(10));
            var deviceActor1 = prob.LastSender;

            deviceGroupActor.Tell(new RequestTrackDevice("TestGroup", "DeviceId1"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>(TimeSpan.FromSeconds(10));
            var deviceActor2 = prob.LastSender;

            deviceActor1.Should().Be(deviceActor2);
        }
コード例 #4
0
        public void RequestTrackDevice_Should_Return_DeviceRegistered()
        {
            var prob             = CreateTestProbe();
            var deviceGroupActor = Sys.ActorOf(DeviceGroupActor.Prop("TestGroup"));

            deviceGroupActor.Tell(new RequestTrackDevice("TestGroup", "DeviceId1"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>();
            var deviceActor1 = prob.LastSender;

            deviceGroupActor.Tell(new RequestTrackDevice("WrongGroup", "DeviceId"), prob.Ref);
            prob.ExpectNoMsg(TimeSpan.FromSeconds(2));

            deviceGroupActor.Tell(new RequestTrackDevice("TestGroup", "DeviceId2"), prob.Ref);
            prob.ExpectMsg <DeviceRegistered>();
            var deviceActor2 = prob.LastSender;

            deviceActor1.Should().NotBe(deviceActor2);
        }