public void Receve_RegisterSameTypeTwice_ObjectTransportExceptionThrown() { //Arrange var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel(); //Act ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel); transport.Receive <MockObjectMessage>().Execute(); transport.Receive <MockObjectMessage>().Execute(); }
public void OnFailedReceived_InvalidPayloadReceived_OnFailHandleExecuted() { //Arrange Client client = new Client("10.0.0.1", 123); ReceivedMessage receivedMessage = null; Exception failedException = null; var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel(); MockObjectMessage receive = new MockObjectMessage(); //Act ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel); transport.Receive <MockObjectMessage>(o => { receive = o; } ) .Execute(); transport.OnFailedReceive((r, e) => { receivedMessage = r; failedException = e; }); networkChannel.SimulateClientConnect(client); networkChannel.SimulateClientResponse(client, "OTransport.tests.NOTHING, ObjectTransport.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullProperty1_string\":\"Test String\",\"Property2_int\":12,\"Property3_decimal\":1.33}"); Assert.IsNotNull(receivedMessage); Assert.IsNotNull(failedException); }
public void Receive_InvalidPayload_PayloadNotProcessed() { //Arrange Client client = new Client("10.0.0.1", 123); var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel(); MockObjectMessage receive = null; //Act ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel); transport.Receive <MockObjectMessage>(o => { receive = o; } ) .Execute(); networkChannel.SimulateClientConnect(client); networkChannel.SimulateClientResponse(client, "{\"Type\":\"OTransport.tests.MockObjectMessage, ObjectTransport.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",:{\"Property1_string\":\"Test String\",\"Property2_int\":12,\"Property3_decimal\":1.33}}" ); //Assert Assert.IsNull(receive); }
public void SendReceiveThroughChannel_ObjectTransportConnectedChannel_ObjectSentAndReceivedBetweenClients() { //Arrange var joinedNetworkChannels = MockNetworkChannelFactory.GetConnectedChannels(); MockObjectMessage sendMessage = new MockObjectMessage(); sendMessage.Property1_string = "test send"; sendMessage.Property2_int = 123; sendMessage.Property3_decimal = 56M; MockObjectMessage receivedMessage = null; //Act ObjectTransport client1 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item1); client1.Receive <MockObjectMessage>(o => { receivedMessage = o; }) .Execute(); ObjectTransport client2 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item2); client2.Send(sendMessage) .Execute(); Utilities.WaitFor(ref receivedMessage); //Assert Assert.AreEqual(sendMessage.Property3_decimal, receivedMessage.Property3_decimal); Assert.AreEqual(sendMessage.Property1_string, receivedMessage.Property1_string); Assert.AreEqual(sendMessage.Property2_int, receivedMessage.Property2_int); }
public void Receive_ObjectWithBinaryProperty_BinaryReceived() { //Arrange var joinedNetworkChannels = MockNetworkChannelFactory.GetConnectedChannels(); MockObjectMessageWithBinary sendMessage = new MockObjectMessageWithBinary(); sendMessage.Property2_String = "Message with binary"; sendMessage.Property1_Bytes = Encoding.ASCII.GetBytes("hello world"); MockObjectMessageWithBinary receivedMessage = null; Client receivedClient = null; //Act ObjectTransport client1 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item1); client1.Receive <MockObjectMessageWithBinary>((c, o) => { receivedClient = c; receivedMessage = o; }) .Execute(); ObjectTransport client2 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item2); client2.Send(sendMessage) .Execute(); //Assert Assert.AreEqual("hello world", System.Text.Encoding.UTF8.GetString(receivedMessage.Property1_Bytes)); Assert.AreEqual(receivedMessage.Property2_String, "Message with binary"); Assert.AreEqual("10.0.0.2", receivedClient.IPAddress); }
public void Receive_ObjectType_ObjectReceiveFunctionExecuted() { //Arrange Client client = new Client("10.0.0.1", 123); var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel(); MockObjectMessage receive = new MockObjectMessage(); //Act ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel); transport.Receive <MockObjectMessage>(o => { receive = o; } ) .Execute(); networkChannel.SimulateClientConnect(client); networkChannel.SimulateClientResponse(client, "OTransport.tests.MockObjectMessage, ObjectTransport.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null::{\"Property1_string\":\"Test String\",\"Property2_int\":12,\"Property3_decimal\":1.33}" ); //Assert Assert.AreEqual("Test String", receive.Property1_string); Assert.AreEqual(12, receive.Property2_int); Assert.AreEqual(1.33M, receive.Property3_decimal); }
public void Receive_ReplyToReceivedObject_ObjectIsSentBack() { //Arrange string replayPayload = null; Client client = new Client("10.0.0.1", 123); var networkChannel = MockNetworkChannelFactory.GetMockedNetworkChannel() .OnSendHandle((Client, payload) => replayPayload = payload); //Act ObjectTransport transport = TestObjectTransportFactory.CreateNewObjectTransport(networkChannel); transport.Receive <MockObjectMessage>() .Reply(o => { MockObjectMessage sendBack = new MockObjectMessage(); sendBack.Property1_string = "Reply message"; sendBack.Property2_int = 12; sendBack.Property3_decimal = 1.33M; return(sendBack); }) .Execute(); networkChannel.SimulateClientConnect(client); networkChannel.SimulateClientResponse(client, "OTransport.tests.MockObjectMessage, ObjectTransport.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null::{\"Property1_string\":\"Test String\",\"Property2_int\":12,\"Property3_decimal\":1.33}" ); //Assert Assert.AreEqual("OTransport.tests.MockObjectMessage, ObjectTransport.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null::{\"Property1_string\":\"Reply message\",\"Property2_int\":12,\"Property3_decimal\":1.33}", replayPayload); }
public void SendReceiveReplyThroughChannel_TwoObjectTransportsConnected_SameTokenUsed() { //Arrange var client2ReceiveFunctionCalled = false; var client2RespondFunctionCalled = false; var joinedNetworkChannels = MockNetworkChannelFactory.GetConnectedChannels(); MockObjectMessage sendMessage = new MockObjectMessage(); sendMessage.Property1_string = "test send"; sendMessage.Property2_int = 123; sendMessage.Property3_decimal = 56M; MockObjectMessage receivedMessage = null; //Act ObjectTransport client1 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item1); client1.Receive <MockObjectMessage>() .Reply((c, o) => { o.Property1_string = "replied"; return(o); }) .Execute(); ObjectTransport client2 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item2); client2.Send(sendMessage) .Response <MockObjectMessage>(o => { client2RespondFunctionCalled = true; receivedMessage = o; }) .Execute(); client2.Receive <MockObjectMessage>(o => { client2ReceiveFunctionCalled = true; receivedMessage = o; }).Execute(); Utilities.WaitFor(ref receivedMessage); //Assert Assert.IsFalse(client2ReceiveFunctionCalled); Assert.IsTrue(client2RespondFunctionCalled); }
static ObjectTransport CheckCreateServer(string answer) { ObjectTransport objectTransportServer = null; if (answer == "1") { Console.WriteLine("Please specify an IP address"); var ipAddress = Console.ReadLine(); //Setup a TCP Server objectTransportServer = ObjectTransport.Factory.CreateTCPServer(ipAddress, 8888); Console.WriteLine("Created TCP server on port 8888"); } if (answer == "3") { Console.WriteLine("Please specify an IP address"); var ipAddress = Console.ReadLine(); //Setup a TCP Server objectTransportServer = ObjectTransport.Factory.CreateUDPServer(ipAddress, 8888); Console.WriteLine("Created UDP server on port 8888"); } //Receive an object of type "Message" objectTransportServer?.Receive <Message>((client, received_message) => { Console.WriteLine("{0} - {1}", client.IPAddress, received_message.Body); //Send the received message to all other clients //except the client who sent the message objectTransportServer.Send(received_message) .ToAllExcept(client) .Execute(); }) .Execute(); return(objectTransportServer); }
public void ReceiveReply_WithClientAction_ObjectAndClientInjectedInToAction() { //Arrange var joinedNetworkChannels = MockNetworkChannelFactory.GetConnectedChannels(); MockObjectMessage sendMessage = new MockObjectMessage(); sendMessage.Property1_string = "test send"; sendMessage.Property2_int = 123; sendMessage.Property3_decimal = 56M; MockObjectMessage receivedMessage = null; Client receivedClient = null; //Act ObjectTransport client1 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item1); client1.Receive <MockObjectMessage>() .Reply((c, o) => { receivedMessage = o; receivedClient = c; return(null); }) .Execute(); ObjectTransport client2 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item2); client2.Send(sendMessage) .Execute(); Utilities.WaitFor(ref receivedMessage); //Assert Assert.AreEqual(sendMessage.Property3_decimal, receivedMessage.Property3_decimal); Assert.AreEqual(sendMessage.Property1_string, receivedMessage.Property1_string); Assert.AreEqual(sendMessage.Property2_int, receivedMessage.Property2_int); Assert.AreEqual("10.0.0.2", receivedClient.IPAddress); }
public void TCPNetwork_SendAndReplyMessage_ResponseIsCalled() { //Arrange Client client = null; Client clientDisconnect = null; server = new TCPServerChannel("127.0.0.1", 0); ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(server); tcpclient = new TCPClientChannel("127.0.0.1", server.Port); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient); clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c); client = clientObjectTransport.GetConnectedClients().First(); Utilities.WaitFor(ref client); Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1); //Act serverObjectTransport.Receive <MockObjectMessage>() .Reply((o) => { return(o); }) .Execute(); var mockObject = new MockObjectMessage() { Property1_string = "Mock Object" }; MockObjectMessage responseObject = null; clientObjectTransport.Send(mockObject) .Response <MockObjectMessage>((r) => { responseObject = r; }) .Execute(); Utilities.WaitFor(ref responseObject); //Assert Assert.AreEqual(responseObject.Property1_string, "Mock Object"); }
public void UDPServer_SendObject_CorrectObjectSent() { //Arrange MockObjectMessage receivedObject = null; udpServer = new UDPServerChannel("127.0.0.1", 0, 32); Client client = null; ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpServer); serverObjectTransport.OnClientConnect(c => client = c); udpClient = new UDPClientChannel("127.0.0.1", udpServer.Port); ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(udpClient); Utilities.WaitFor(ref client); //Act clientObjectTransport.Receive <MockObjectMessage>(o => receivedObject = o ).Execute(); serverObjectTransport.Send(new MockObjectMessage() { Property1_string = "hello world!", Property2_int = 123, Property3_decimal = 12.3M }) .To(client) .Execute(); Utilities.WaitFor(ref receivedObject); //Assert Assert.AreEqual("hello world!", receivedObject.Property1_string); Assert.AreEqual(123, receivedObject.Property2_int); Assert.AreEqual(12.3M, receivedObject.Property3_decimal); }
static ObjectTransport CheckCreateClient(string answer) { ObjectTransport objectTransportClient = null; if (answer == "2") { Console.WriteLine("Please specify an IP address"); var ipAddress = Console.ReadLine(); //Setup a TCP Server objectTransportClient = ObjectTransport.Factory.CreateTCPClient(ipAddress, 8888); Console.WriteLine("Created TCP server on port 8888"); } if (answer == "4") { Console.WriteLine("Please specify an IP address"); var ipAddress = Console.ReadLine(); //Setup a TCP Server objectTransportClient = ObjectTransport.Factory.CreateUDPClient(ipAddress, 8888); Console.WriteLine("Created UDP server on port 8888"); } //Receive an object of type "Message" //When client receives an object of type "Message" output to console. objectTransportClient?.Receive <Message>((client, received_Message) => { Console.WriteLine("{0} - {1}", client.IPAddress, received_Message.Body); }) .Execute(); return(objectTransportClient); }
public void Protobuff_UsingProtobuffSerializer_objectIsSentAndReceived() { //Arrange var joinedNetworkChannels = MockNetworkChannelFactory.GetConnectedChannels(); Protobuf_MockObjectMessage sendMessage = new Protobuf_MockObjectMessage(); sendMessage.Property1_string = "test send"; sendMessage.Property2_int = 123; sendMessage.Property3_decimal = 56M; Protobuf_MockObjectMessage receivedMessage = null; Client receivedClient = null; //Act ObjectTransport client1 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item1, new ProtobufSerializer()); client1.Receive <Protobuf_MockObjectMessage>((c, o) => { receivedClient = c; receivedMessage = o; }) .Execute(); ObjectTransport client2 = TestObjectTransportFactory.CreateNewObjectTransport(joinedNetworkChannels.Item2, new ProtobufSerializer()); client2.Send(sendMessage) .Execute(); //Assert Assert.AreEqual(sendMessage.Property3_decimal, receivedMessage.Property3_decimal); Assert.AreEqual(sendMessage.Property1_string, receivedMessage.Property1_string); Assert.AreEqual(sendMessage.Property2_int, receivedMessage.Property2_int); Assert.AreEqual("10.0.0.2", receivedClient.IPAddress); }