public void ActorSubscriberSpec_should_terminate_after_cancel() { var actorRef = Source.From(Enumerable.Range(1, 5)) .RunWith(Sink.ActorSubscriber <int>(ManualSubscriber.Props(TestActor)), Sys.Materializer()); Watch(actorRef); actorRef.Tell("requestAndCancel"); ExpectTerminated(actorRef); }
public void ActorSubscriber_should_signal_error() { var e = new Exception("simulated"); var actorRef = Source.FromEnumerator <int>(() => { throw e; }) .RunWith(Sink.ActorSubscriber <int>(ManualSubscriber.Props(TestActor)), Sys.Materializer()); actorRef.Tell("ready"); ExpectMsg <OnError>().Cause.Should().Be(e); }
public void ActorSubscriberSpec_should_not_deliver_more_after_cancel() { var actorRef = Source.From(Enumerable.Range(1, 5)) .RunWith(Sink.ActorSubscriber <int>(ManualSubscriber.Props(TestActor)), Sys.Materializer()); actorRef.Tell("ready"); ExpectMsg <OnNext>().Element.Should().Be(1); ExpectMsg <OnNext>().Element.Should().Be(2); actorRef.Tell("requestAndCancel"); ExpectNoMsg(200); }
public void ActorSubscriber_should_receive_requested_elements() { var actorRef = Source.From(new[] { 1, 2, 3 }) .RunWith(Sink.ActorSubscriber <int>(ManualSubscriber.Props(TestActor)), Sys.Materializer()); ExpectNoMsg(200); actorRef.Tell("ready"); //requesting 2 ExpectMsg <OnNext>().Element.Should().Be(1); ExpectMsg <OnNext>().Element.Should().Be(2); ExpectNoMsg(200); actorRef.Tell("ready"); ExpectMsg <OnNext>().Element.Should().Be(3); ExpectMsg <OnComplete>(); }
public void ActorSubscriberSpec_should_remember_requested_after_restart() { // creating actor with default supervision, because stream supervisor default strategy is to var actorRef = Sys.ActorOf(ManualSubscriber.Props(TestActor)); Source.From(Enumerable.Range(1, 7)) .RunWith(Sink.FromSubscriber(new ActorSubscriberImpl <int>(actorRef)), Sys.Materializer()); actorRef.Tell("ready"); ExpectMsg <OnNext>().Element.Should().Be(1); ExpectMsg <OnNext>().Element.Should().Be(2); ExpectNoMsg(200); actorRef.Tell("boom"); actorRef.Tell("ready"); actorRef.Tell("ready"); actorRef.Tell("boom"); Enumerable.Range(3, 4).ForEach(n => ExpectMsg <OnNext>().Element.Should().Be(n)); ExpectNoMsg(200); actorRef.Tell("ready"); ExpectMsg <OnNext>().Element.Should().Be(7); ExpectMsg <OnComplete>(); }