GetGmAgentConnections() { Stream agentToGmStream = new EchoStream(); Stream gmToAgentStream = new EchoStream(); Stream agentSideStream = new StreamRWJoin(gmToAgentStream, agentToGmStream); Stream gmSideStream = new StreamRWJoin(agentToGmStream, gmToAgentStream); var agentQueueAdapter = new SenderReceiverQueueAdapter( new StreamMessageSenderReceiver( agentSideStream, new Parser())); var gmQueueAdapter = new SenderReceiverQueueAdapter( new StreamMessageSenderReceiver( gmSideStream, new Parser())); return(agentQueueAdapter, gmQueueAdapter); }
public void TestCallbackCalledOnParseError() { Exception receivedException = null; Stream agentToGmStream = new EchoStream(); Stream gmToAgentStream = new EchoStream(); Stream agentSideStream = new StreamRWJoin(gmToAgentStream, agentToGmStream); Stream gmSideStream = new StreamRWJoin(agentToGmStream, gmToAgentStream); StreamMessageSenderReceiver agentSenderReceiver = new StreamMessageSenderReceiver(agentSideStream, new Parser()); Semaphore semaphore = new Semaphore(0, 100); agentSenderReceiver.StartReceiving(message => { }, e => { receivedException = e; semaphore.Release(); }); string messageText = System.Text.Json.JsonSerializer.Serialize(new { a = "abc" }); byte[] messageBytes = Encoding.UTF8.GetBytes(messageText); byte[] messageLengthBytes = BitConverter.GetBytes((ushort)messageBytes.Length); if (!BitConverter.IsLittleEndian) { Array.Reverse(messageLengthBytes); } //when gmSideStream.Write(messageLengthBytes, 0, 2); gmSideStream.Write(messageBytes, 0, messageBytes.Length); semaphore.WaitOne(); //then Assert.IsNotNull(receivedException); Assert.IsInstanceOfType(receivedException, typeof(CommunicationLibrary.Exceptions.ParsingException)); //after agentSenderReceiver.Dispose(); gmSideStream.Close(); semaphore.Dispose(); }