Akka.Streams.Tests.Dsl.SubstreamSubscriptionTimeoutSpec.GroupBy_and_SplitWhen_must_not_timeout_and_cancel_substream_publisher_when_they_have_been_subscribed_to C# (CSharp) Method

GroupBy_and_SplitWhen_must_not_timeout_and_cancel_substream_publisher_when_they_have_been_subscribed_to() private method

        public void GroupBy_and_SplitWhen_must_not_timeout_and_cancel_substream_publisher_when_they_have_been_subscribed_to()
        {
            var subscriber = TestSubscriber.CreateManualProbe<Tuple<int, Source<int, NotUsed>>>(this);
            var publisherProbe = TestPublisher.CreateProbe<int>(this);
            var publisher =
                Source.FromPublisher(publisherProbe)
                    .GroupBy(2, x => x % 2)
                    .Lift(x => x % 2).RunWith(Sink.FromSubscriber(subscriber), Materializer);

            var downstreamSubscription = subscriber.ExpectSubscription();
            downstreamSubscription.Request(10);

            publisherProbe.SendNext(1);
            publisherProbe.SendNext(2);

            var s1 = subscriber.ExpectNext().Item2;
            var s1SubscriberProbe = TestSubscriber.CreateManualProbe<int>(this);
            s1.RunWith(Sink.FromSubscriber(s1SubscriberProbe), Materializer);
            var s1Subscription = s1SubscriberProbe.ExpectSubscription();
            s1Subscription.Request(1);
            s1SubscriberProbe.ExpectNext().Should().Be(1);

            var s2 = subscriber.ExpectNext().Item2;
            var s2SubscriberProbe = TestSubscriber.CreateManualProbe<int>(this);
            s2.RunWith(Sink.FromSubscriber(s2SubscriberProbe), Materializer);
            var s2Subscription = s2SubscriberProbe.ExpectSubscription();
            Thread.Sleep(1500);
            s2Subscription.Request(100);
            s2SubscriberProbe.ExpectNext().Should().Be(2);
            s1Subscription.Request(100);
            publisherProbe.SendNext(3);
            publisherProbe.SendNext(4);
            s1SubscriberProbe.ExpectNext().Should().Be(3);
            s2SubscriberProbe.ExpectNext().Should().Be(4);
        }
    }