예제 #1
0
        private static void ValidateProbe(TestSubscriber.ManualProbe <int> probe, int requests, IEnumerable <int> result)
        {
            var subscription = probe.ExpectSubscription();

            var collected = Enumerable.Range(1, requests).Select(_ =>
            {
                subscription.Request(1);
                return(probe.ExpectNext());
            });

            collected.ShouldAllBeEquivalentTo(result);
            probe.ExpectComplete();
        }
예제 #2
0
        public KinesisFlowSpec(ITestOutputHelper output) : base("akka.loglevel = DEBUG", output)
        {
            _materializer  = Sys.Materializer();
            _kinesisClient = NSubstitute.Substitute.For <IAmazonKinesis>();
            _sourceProbe   = this.CreateManualPublisherProbe <string>();
            _sinkProbe     = this.CreateManualSubscriberProbe <string>();

            Source.FromPublisher(_sourceProbe)
            .Select(x => new PutRecordsRequestEntry
            {
                PartitionKey = "partition-1",
                Data         = new MemoryStream(Encoding.UTF8.GetBytes(x))
            })
            .Via(KinesisFlow.Create("test-stream", KinesisFlowSettings.Default, () => _kinesisClient))
            .Select(x => x.SequenceNumber)
            .To(Sink.FromSubscriber(_sinkProbe))
            .Run(_materializer);
        }
예제 #3
0
 public StreamPuppet(IPublisher <int> p, TestKitBase kit)
 {
     _probe = TestSubscriber.CreateManualProbe <int>(kit);
     p.Subscribe(_probe);
     _subscription = _probe.ExpectSubscription();
 }
예제 #4
0
 public StreamPuppet(IPublisher<int> p, TestKitBase kit)
 {
     _probe = TestSubscriber.CreateManualProbe<int>(kit);
     p.Subscribe(_probe);
     _subscription = _probe.ExpectSubscription();
 }
        private IRunnableGraph <Tuple <NotUsed, NotUsed, NotUsed> > ThreeSourceMerge <T>(Source <T, NotUsed> source1, Source <T, NotUsed> source2,
                                                                                         Source <T, NotUsed> source3, List <int> priorities, TestSubscriber.ManualProbe <T> probe)
        {
            return(RunnableGraph.FromGraph(GraphDsl.Create(source1, source2, source3, Tuple.Create, (builder, s1, s2, s3) =>
            {
                var merge = builder.Add(new MergePrioritized <T>(priorities));

                builder.From(s1.Outlet).To(merge.In(0));
                builder.From(s2.Outlet).To(merge.In(1));
                builder.From(s3.Outlet).To(merge.In(2));

                builder.From(merge.Out).To(Sink.FromSubscriber(probe));

                return ClosedShape.Instance;
            })));
        }