Exemple #1
0
        public void MyTestInitialize()
        {
            _client = new TestablePNet();
            _client.TestableHook.StartUpdateThread();

            _testRoom  = Room.CreateRoom("test room");
            _testRoom2 = Room.CreateRoom("test room 2");
        }
Exemple #2
0
        public void MyTestInitialize()
        {
            _client = new TestablePNet();
            _client.TestableHook.StartUpdateThread();

            _client.OnRoomChange         += s => _client.FinishedRoomChange();
            PNetServer.OnPlayerConnected += player => player.ChangeRoom(_testRoom);

            _testRoom = Room.CreateRoom("test room");

            _client.Connect(TestablePNet.GetTestConnectionConfig());
            Thread.Sleep(250);
            _player = PNetServer.AllPlayers().First(f => f != null && f != Player.Server);
        }
Exemple #3
0
        public void TestConnecting()
        {
            //setup a default server
            ServerUtils.SetupDefaultServer();
            ServerUtils.StartServerOnNewThread();

            var client = new TestablePNet();

            client.TestableHook.StartUpdateThread();
            client.OnFailedToConnect += s => Assert.Fail("Failed to connect: {0}", s);

            //the client should connect and disconnect quickly
            client.Connect(TestablePNet.GetTestConnectionConfig());
            Thread.Sleep(200);
            Assert.AreEqual(client.Status, NetConnectionStatus.Connected, "The client took longer than 200 ms to connect");

            client.Disconnect();
            Thread.Sleep(200);
            Assert.AreEqual(client.Status, NetConnectionStatus.Disconnected, "The client took longer than 200 ms to disconnect");

            //some cleanup
            ServerUtils.TeardownServer();
        }
Exemple #4
0
        public void TestRoomJoining()
        {
            _client.OnRoomChange         += s => _client.FinishedRoomChange();
            PNetServer.OnPlayerConnected += OnPlayerConnected;



            _client.Connect(TestablePNet.GetTestConnectionConfig());

            Thread.Sleep(250);

            Assert.AreEqual(NetConnectionStatus.Connected, _client.Status, "Client did not connect in 250 ms");

            Thread.Sleep(100);

            var tPlayer = PNetServer.AllPlayers()[1];

            Assert.AreSame(_testRoom, tPlayer.CurrentRoom, "Client did not change to the room within 100 ms");

            GameState.InvokeIfRequired(() =>
            {
                tPlayer.ChangeRoom(_testRoom2);
            });

            Thread.Sleep(100);

            Assert.AreSame(_testRoom2, tPlayer.CurrentRoom, "Client did not switch to room 2 within 100 ms");

            GameState.InvokeIfRequired(() =>
            {
                tPlayer.ChangeRoom(_testRoom);
            });

            Thread.Sleep(100);

            Assert.AreSame(_testRoom, tPlayer.CurrentRoom, "Client did not change back to room within 100 ms");
        }
Exemple #5
0
        public void RapidConnectionsTest()
        {
            const int ClientCount              = 20;
            const int ClientConnectionTries    = 5;
            const int ExpectedTotalConnections = ClientCount * ClientConnectionTries;

            ServerUtils.SetupDefaultServer();
            ServerUtils.StartServerOnNewThread();

            int cCount  = 0;
            int dcCount = 0;

            PNetServer.OnPlayerConnected    += player => Interlocked.Increment(ref cCount);
            PNetServer.OnPlayerDisconnected += player => Interlocked.Increment(ref dcCount);
            PNetServer.ApproveConnection    += message =>
            {
                Thread.Sleep(10);
                message.SenderConnection.Approve();
            };

            var clients = new TestablePNet[ClientCount];

            for (int i = 0; i < clients.Length; i++)
            {
                clients[i] = new TestablePNet();
                clients[i].TestableHook.StartUpdateThread();
                int i1 = i;
                clients[i].OnFailedToConnect += s => Assert.Fail("{0} failed to connect: {1}", i1, s);
            }

            var connTasks = new List <Task>(clients.Length);

            Thread.Sleep(100); //wait for clients to start...
            for (int c = 0; c < clients.Length; c++)
            {
                var client = clients[c];
                int c1     = c;
                var task   = new Task(() =>
                {
                    int connectCount            = 0;
                    var config                  = TestablePNet.GetTestConnectionConfig();
                    client.OnFailedToConnect   += s => Assert.Fail("{0} connect failed {1}", c1, s);
                    client.OnConnectedToServer += () =>
                    {
                        connectCount++;
                        Thread.Sleep(200);
                        client.Disconnect();
                    };
                    client.OnDisconnectedFromServer += () =>
                    {
                        if (connectCount < ClientConnectionTries)
                        {
                            client.Connect(config);
                        }
                    };
                    client.Connect(config);

                    while (connectCount < ClientConnectionTries)
                    {
                        Thread.Sleep(1);
                    }
                });
                connTasks.Add(task);
            }

            var aTasks = connTasks.ToArray();

            foreach (var task in aTasks)
            {
                task.Start();
            }

            Task.WaitAll(aTasks);

            Thread.Sleep(500);
            Assert.AreEqual(ExpectedTotalConnections, cCount, "Expected " + ExpectedTotalConnections + " connections but got " + cCount);
            Assert.AreEqual(ExpectedTotalConnections, dcCount, "Expected " + ExpectedTotalConnections + " disconnects but got " + dcCount);
            var ap = PNetServer.AllPlayers();

            foreach (var player in ap)
            {
                Assert.IsNull(player);
            }
        }
Exemple #6
0
 public void MyTestInitialize()
 {
     _net    = new TestablePNet();
     _target = new NetworkViewManager(_net);
 }