public void TestTransport(IAcceptor acc, IConnector conn, string address, string port) { acceptor = acc; connector = conn; acceptor.Start(); acceptor.NewTransportAccepted += SetupServer; acceptorThread = new Thread(RunAcceptor); acceptorThread.Name = "Acceptor"; acceptorThread.IsBackground = true; acceptorThread.Start(); client = connector.Connect(address, port, new Dictionary<string, string>()); Assert.IsNotNull(client); client.PacketReceived += ClientReceivedPacket; for (int i = 0; i < 10; i++) { sourceData[0] = (byte)i; Debug("client: sending packet#" + i + ": " + ByteUtils.DumpBytes(sourceData, 0, sourceData.Length)); client.SendPacket(new TransportPacket(sourceData)); if (failure.Length != 0) { Assert.Fail(failure); } Thread.Sleep(500); client.Update(); } Assert.AreEqual(10, serverPacketCount); Assert.AreEqual(10, clientPacketCount); try { client.SendPacket(new TransportPacket(new byte[client.MaximumPacketSize * 2])); Assert.Fail("Transport allowed sending packets exceeding its capacity"); } catch (ContractViolation) { /* expected */ } }
public void SetUp() { acceptor = new UdpAcceptor(IPAddress.Any, 8765, new TransportFactory<UdpHandle>(BaseUdpTransport.SequencedProtocolDescriptor, h => new UdpSequencedServerTestTransport(h), t => t is UdpSequencedServerTestTransport)); connector = new UdpConnector( new TransportFactory<UdpClient>(BaseUdpTransport.SequencedProtocolDescriptor, h => new UdpSequencedClientTestTransport(h), t => t is UdpSequencedClientTestTransport)); acceptor.NewTransportAccepted += delegate(ITransport transport, IDictionary<string, string> capabilities) { serverTransport = (UdpSequencedServerTestTransport)transport; }; acceptor.Start(); Thread acceptorThread = new Thread(delegate() { for (int i = 0; serverTransport == null && i < 100; i++) { try { acceptor.Update(); Thread.Sleep(50); } catch (Exception e) { Console.WriteLine("Acceptor Thread: " + e); } } }); acceptorThread.IsBackground = true; acceptorThread.Name = "Acceptor Thread"; acceptorThread.Start(); Thread.Sleep(50); clientTransport = (UdpSequencedClientTestTransport)connector.Connect("127.0.0.1", "8765", new Dictionary<string, string>()); acceptorThread.Join(); Assert.IsNotNull(clientTransport); Assert.IsNotNull(serverTransport); acceptor.Dispose(); connector.Dispose(); }