public void RoomFlags_SuppressRoomEvents([Values("UseFlag", "UseFlags", "Conflict")] string testCase)
        {
            UnifiedTestClient client1 = null;
            UnifiedTestClient client2 = null;

            try
            {
                var roomName = this.GenerateRandomizedRoomName("SuppressRoomEvents_");

                client1 = this.CreateMasterClientAndAuthenticate(Player1);
                client2 = this.CreateMasterClientAndAuthenticate(Player2);

                var createGameResponse = client1.CreateGame(roomName, true, true, 4);

                // switch client 1 to GS
                this.ConnectAndAuthenticate(client1, createGameResponse.Address, client1.UserId);

                var createRequest = new OperationRequest {
                    OperationCode = OperationCode.CreateGame, Parameters = new Dictionary <byte, object>()
                };
                createRequest.Parameters.Add(ParameterCode.RoomName, createGameResponse.GameId);

                if (testCase == "UseFlags")
                {
                    createRequest.Parameters.Add((byte)ParameterKey.RoomOptionFlags, RoomOptionFlags.SuppressRoomEvents);
                }
                else if (testCase == "UseFlag")
                {
                    createRequest.Parameters.Add((byte)Operations.ParameterCode.SuppressRoomEvents, true);
                }
                else
                {
                    createRequest.Parameters.Add((byte)ParameterKey.RoomOptionFlags, RoomOptionFlags.SuppressRoomEvents);
                    createRequest.Parameters.Add((byte)Operations.ParameterCode.SuppressRoomEvents, false);
                }

                client1.SendRequestAndWaitForResponse(createRequest);

                this.ConnectAndAuthenticate(client2, createGameResponse.Address, client1.UserId);
                client2.JoinGame(roomName);

                EventData eventData;
                Assert.IsFalse(client1.TryWaitForEvent(EventCode.Join, ConnectPolicy.WaitTime, out eventData));

                client1.Dispose();
                Assert.IsFalse(client2.TryWaitForEvent(EventCode.Leave, ConnectPolicy.WaitTime, out eventData));
            }
            finally
            {
                DisposeClients(client1, client2);
            }
        }
Ejemplo n.º 2
0
        public void A_Group_PluginHttpCallSyncAfterContinueTests()
        {
            const string config = "HttpCallSyncAfterContinue";

            UnifiedTestClient client  = null;
            UnifiedTestClient client2 = null;
            var GameName = RandomizeString(MethodBase.GetCurrentMethod().Name);

            try
            {
                client = this.CreateMasterClientAndAuthenticate("User1");

                var request = new OperationRequest
                {
                    OperationCode = OperationCode.CreateGame,
                    Parameters    = new Dictionary <byte, object>
                    {
                        { ParameterCode.RoomName, GameName },
                        { ParameterCode.EmptyRoomTTL, 0 },
                        { ParameterCode.PlayerTTL, 0 },
                        { ParameterCode.CheckUserOnJoin, false },
                        { ParameterCode.CleanupCacheOnLeave, false },
                        { ParameterCode.SuppressRoomEvents, false },
                        { ParameterCode.LobbyName, "Default" },
                        { ParameterCode.LobbyType, (byte)0 },
                        {
                            ParameterCode.GameProperties, new Hashtable {
                                { "config", config }
                            }
                        },
                        { ParameterCode.Plugins, new string[] { "AllMethosCallHttpTestPlugin" } },
                    }
                };

                var response = client.SendRequestAndWaitForResponse(request);

                this.ConnectAndAuthenticate(client, (string)response[ParameterCode.Address], client.UserId);

                client.SendRequestAndWaitForResponse(request);

                client.CheckThereIsEvent(123, this.WaitTimeout);

                client.SendRequestAndWaitForResponse(new OperationRequest
                {
                    OperationCode = OperationCode.SetProperties,
                    Parameters    = new Dictionary <byte, object>
                    {
                        { ParameterCode.Properties, new Hashtable {
                              { GamePropertyKey.IsOpen, true }
                          } }
                    }
                });

                client.CheckThereIsErrorInfoEvent(this.WaitTimeout);
                client.CheckThereIsEvent(123, this.WaitTimeout);

                request = new OperationRequest
                {
                    OperationCode = OperationCode.JoinGame,
                    Parameters    = new Dictionary <byte, object>
                    {
                        { ParameterCode.RoomName, GameName },
                        { ParameterCode.PlayerProperties, new Hashtable {
                              { "Actor2Property", "Actor2PropertyValue" }
                          } },
                        { ParameterCode.GameProperties, new Hashtable() },
                        { ParameterCode.UserId, "User2" },
                        { ParameterCode.LobbyName, "Default" },
                    },
                };

                client2  = this.CreateMasterClientAndAuthenticate("User2");
                response = client2.SendRequestAndWaitForResponse(request);

                this.ConnectAndAuthenticate(client2, (string)response[ParameterCode.Address], client2.UserId);
                client2.SendRequestAndWaitForResponse(request);

                client.CheckThereIsErrorInfoEvent(this.WaitTimeout);
                client.CheckThereIsEvent(123, this.WaitTimeout);

                request = new OperationRequest
                {
                    OperationCode = OperationCode.RaiseEvent,
                    Parameters    = new Dictionary <byte, object>
                    {
                        { ParameterCode.Code, (byte)1 },
                    }
                };

                client.SendRequest(request);

                client.CheckThereIsEvent(123, this.WaitTimeout);

                client2.SendRequestAndWaitForResponse(new OperationRequest
                {
                    OperationCode = OperationCode.Leave,
                    Parameters    = new Dictionary <byte, object> {
                        { ParameterCode.IsInactive, true }
                    }
                });

                client2.Disconnect();

                client.CheckThereIsNoErrorInfoEvent();

                client.Disconnect();
            }
            finally
            {
                if (client != null && client.Connected)
                {
                    client.Disconnect();
                    client.Dispose();
                }

                if (client2 != null && client2.Connected)
                {
                    client2.Disconnect();
                    client2.Dispose();
                }

                this.CheckGameIsClosed(GameName, this.WaitTimeout);
            }
        }