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; }
private EventEnvelope ExpectEnvelope(TestSubscriber.Probe <EventEnvelope> probe, string persistenceId, long sequenceNr, string @event) { var envelope = probe.ExpectNext <EventEnvelope>(e => true); envelope.PersistenceId.Should().Be(persistenceId); envelope.SequenceNr.Should().Be(sequenceNr); envelope.Event.Should().Be(@event); return(envelope); }
public override object Create(MaterializationContext context, out TestSubscriber.Probe <ByteString> materializer) { var promise = _properties.Probes[_properties.ProbesWriterTop]; var probe = TestSubscriber.CreateSubscriberProbe <ByteString>(_properties.Kit); promise.SetResult(probe); _properties.ProbesWriterTop++; materializer = probe; return(probe); }
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); }
public SubFlowState(TestSubscriber.Probe <ByteString> probe, bool hasDemand, ByteString firstElement) { Probe = probe; HasDemand = hasDemand; FirstElement = firstElement; }