private void ClientReceivePackets(GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection> clientDriver, int packetCount, NetworkConnection clientToServer, long startTime, int minDelay)
        {
            DataStreamReader readStrm;

            NetworkEvent.Type netEvent;
            var abortTimer = new Timer();

            while (true)
            {
                if (abortTimer.ElapsedMilliseconds > 2000)
                {
                    Assert.Fail("Did not receive first delayed packet");
                }
                netEvent = clientToServer.PopEvent(clientDriver, out readStrm);
                if (netEvent == NetworkEvent.Type.Data)
                {
                    break;
                }
                m_ServerDriver.ScheduleUpdate().Complete();
                clientDriver.ScheduleUpdate().Complete();
            }

            // All delayed packets (from first patch) should be poppable now
            for (int i = 0; i < packetCount; i++)
            {
                var delay = Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond - startTime;
                Assert.AreEqual(NetworkEvent.Type.Data, netEvent);
                Assert.That(delay >= minDelay, "Delay too low on packet " + i + ": " + delay);
                Assert.AreEqual(64, readStrm.Length);
                var readCtx = default(DataStreamReader.Context);
                for (int j = 0; j < 16; j++)
                {
                    var read = readStrm.ReadInt(ref readCtx);
                    Assert.AreEqual(i + 1, read);
                    Assert.True(read > 0 && read <= packetCount, "read incorrect value: " + read);
                }

                // Test done when all packets have been verified
                if (i == packetCount - 1)
                {
                    break;
                }

                // It could be not all patch of packets were processed in one update (depending on how the timers land)
                abortTimer = new Timer();
                while ((netEvent = clientToServer.PopEvent(clientDriver, out readStrm)) == NetworkEvent.Type.Empty)
                {
                    if (abortTimer.ElapsedMilliseconds > 1000)
                    {
                        Assert.Fail("Didn't receive all delayed packets");
                    }
                    clientDriver.ScheduleUpdate().Complete();
                    m_ServerDriver.ScheduleUpdate().Complete();
                }
            }
        }
        public void IPC_Setup()
        {
            IPCManager.Instance.Initialize(100);
            // NOTE: MaxPacketSize should be 64 for all the tests using simulator except needs to account for header size as well (one test has 2x2B headers)
            var simulatorParams = new SimulatorUtility.Parameters()
            {
                MaxPacketSize = 68, MaxPacketCount = 30, PacketDelayMs = 100
            };

            m_ServerDriver = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams);
            m_ServerDriver.Bind(IPCManager.Instance.CreateEndPoint());
            m_ServerDriver.Listen();
            m_ClientDriver  = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams);
            m_ClientDriver2 = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams);
        }
Exemple #3
0
 public UdpNetworkDriver(params INetworkParameter[] param)
 {
     m_genericDriver = new GenericNetworkDriver <IPv4UDPSocket, DefaultPipelineStageCollection>(param);
 }
Exemple #4
0
 internal Concurrent(GenericNetworkDriver <IPv4UDPSocket, DefaultPipelineStageCollection> .Concurrent genericConcurrent)
 {
     m_genericConcurrent = genericConcurrent;
 }