public async Task Websocket_stream_should_work_when_used_by_multiple_flows() { // Arrange _connectCallback = (source, sink) => { _fromClient2 = source.RunWith(this.SinkProbe <ISignalREvent>(), Sys.Materializer()); _toClient2 = sink.RunWith(this.SourceProbe <ISignalRResult>(), Sys.Materializer()); }; await ConnectAsync(msg => Log.Info(msg)); var data1 = _fromClient.RequestNext(); var data2 = _fromClient2.RequestNext(); data1.Should().BeOfType <Connected>(); data2.Should().BeOfType <Connected>(); await _connection.InvokeAsync(nameof(IServerSource.Send), "payload"); data1 = _fromClient.RequestNext(); data2 = _fromClient2.RequestNext(); data1.Should().BeOfType <Received>(); data2.Should().BeOfType <Received>(); ((Received)data1).Data.ToString().Should().Be("payload"); ((Received)data2).Data.ToString().Should().Be("payload"); }
public void Connect(Source <ISignalREvent, NotUsed> source, Sink <ISignalRResult, NotUsed> sink) { _fromClient = source.RunWith(this.SinkProbe <ISignalREvent>(), Sys.Materializer()); _toClient = sink.RunWith(this.SourceProbe <ISignalRResult>(), Sys.Materializer()); _connectCallback?.Invoke(source, sink); _connected = true; }
public BatchWriteStageSpec(ITestOutputHelper output) : base(output: output) { this.materializer = Sys.Materializer(); this.settings = new DurableEventWriterSettings(Sys.Settings.Config); this.src = this.CreatePublisherProbe <ImmutableArray <DurableEvent> >(); this.snk = this.CreateSubscriberProbe <IEnumerable <DurableEvent> >(); Source.FromPublisher(this.src) .Via(Flow.FromGraph(new BatchWriteStage(ec => Writer(ec)))) .RunWith(Sink.FromSubscriber(this.snk), this.materializer); }