public async Task CanGetState() { var serverAddress = "inproc://get-state-test"; var serverSocket = new PairSocket(); serverSocket.Bind(serverAddress); var processor = new TransactionProcessor(serverAddress); processor.Start(); var context = new TransactionContext(processor, "context"); var addresses = new[] { "address1", "address2" }; var task = Task.Run(() => { var message = new Message(); message.MergeFrom(serverSocket.ReceiveFrameBytes()); Assert.Equal(MessageType.TpStateGetRequest, message.MessageType); var response = new TpStateGetResponse(); response.Entries.AddRange(addresses.Select(x => new TpStateEntry { Address = x, Data = ByteString.Empty })); serverSocket.SendFrame(response.Wrap(message, MessageType.TpStateGetResponse).ToByteArray()); }); var stateResponse = await context.GetStateAsync(addresses); Assert.Equal(addresses.Length, stateResponse.Count()); }
public void RespondToPing() { // Setup var serverSocket = new PairSocket(); serverSocket.Bind("inproc://stream-test"); var pingMessage = new PingRequest().Wrap(MessageType.PingRequest); var stream = new Stream("inproc://stream-test"); stream.Connect(); // Run test case var task1 = Task.Run(() => serverSocket.SendFrame(pingMessage.ToByteString().ToByteArray())); var task2 = Task.Run(() => { var message = new Message(); message.MergeFrom(serverSocket.ReceiveFrameBytes()); return(message); }); Task.WhenAll(new[] { task1, task2 }); var actualMessage = task2.Result; // Verify Assert.Equal(MessageType.PingResponse, actualMessage.MessageType); Assert.Equal(pingMessage.CorrelationId, actualMessage.CorrelationId); serverSocket.Unbind("inproc://stream-test"); stream.Disconnect(); }
public byte[] ReceiveFrameBytes() { return(m_messagesPipe.ReceiveFrameBytes()); }