Exemplo n.º 1
0
        protected override async Task <JToken> ExecuteController(JToken data)
        {
            var requestedInstance = await new RequestedInstance(ArenaMetaId).LoadAsync();

            if (requestedInstance == null)
            {
                return(JStatus.RequestedInstanceNotFound);
            }
            if (!await requestedInstance.DeleteAsync())
            {
                OccFailFlag = true; return(JStatus.OccFail);
            }

            var arenaInstance = new ArenaInstance(ArenaMetaId, Port);

            arenaInstance.IsOpen = true;
            var gameServer = await new GameServer(Ip).LoadAsync();

            if (gameServer == null)
            {
                return(JStatus.NotFound);
            }
            gameServer.ActiveInstances.Add(arenaInstance);
            if (!await gameServer.ReplaceAsync())
            {
                OccFailFlag = true; return(JStatus.OccFail);
            }

            return(JStatus.Ok);
        }
Exemplo n.º 2
0
        public async void RequisitesForAvailableInstanceProvided()
        {
            var playerId     = "Test_RequisitesForAvailableInstanceProvided";
            var serverIp     = "Test_RequisitesForAvailableInstanceProvided";
            var instancePort = "Test_RequisitesForAvailableInstanceProvided";
            var arenaMetaId  = "Test_RequisitesForAvailableInstanceProvided";

            // Create test arena meta if it doesn't exist.
            var arenaMeta = await new ArenaMeta(arenaMetaId).LoadAsync();

            if (arenaMeta == null)
            {
                arenaMeta            = new ArenaMeta(arenaMetaId);
                arenaMeta.MaxPlayers = 10;
                await arenaMeta.InsertAsync();
            }

            // Create test server with test instance.
            var instance = new ArenaInstance(arenaMetaId, instancePort);
            var server   = await Helpers.CreateTestServer(serverIp, instance : instance);

            // Create and auth test player.
            await Helpers.CreateTestPlayer(playerId);

            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'ArenaMetaId':'{arenaMetaId}'
            }}");

            // Execute controller.
            var conrtoller    = new RequestInstanceController();
            var responseToken = await conrtoller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Assert returned IP and port are valid.
            Assert.Equal(responseToken["Ip"], serverIp);
            Assert.Equal(responseToken["Port"], instancePort);

            // Make sure instance free slot was removed.
            server = await server.LoadAsync();

            Assert.True(server.ActiveInstances[0].FreeSlots == 9);
        }
Exemplo n.º 3
0
        public static async Task <GameServer> CreateTestServer(string serverIp, bool replace = true,
                                                               ArenaInstance instance        = null, List <ArenaInstance> instances = null)
        {
            var server = new GameServer(serverIp);

            if (instances != null)
            {
                server.ActiveInstances = instances;
            }
            if (instance != null)
            {
                server.ActiveInstances.Add(instance);
            }

            return(await CreateTestServer(server, replace));
        }
Exemplo n.º 4
0
        public async void ClosedInstanceWontAcceptJoinRequests()
        {
            var playerId     = "Test_ClosedInstanceWontAcceptJoinRequests";
            var arenaMetaId  = "Test_ClosedInstanceWontAcceptJoinRequests";
            var serverIp     = "Test_ClosedInstanceWontAcceptJoinRequests";
            var instancePort = "Test_ClosedInstanceWontAcceptJoinRequests";

            // Create test arena meta if it doesn't exist.
            var arenaMeta = await new ArenaMeta(arenaMetaId).LoadAsync();

            if (arenaMeta == null)
            {
                arenaMeta = new ArenaMeta(arenaMetaId);
                await arenaMeta.InsertAsync();
            }

            // Create test server with a closed instance.
            var instance = new ArenaInstance(arenaMetaId, instancePort);

            instance.FreeSlots = 2;
            instance.IsOpen    = false;
            var server = await Helpers.CreateTestServer(serverIp, instance : instance);

            // Create and auth test player.
            await Helpers.CreateTestPlayer(playerId);

            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'ArenaMetaId':'{arenaMetaId}'
            }}");

            // Execute controller.
            var conrtoller    = new RequestInstanceController();
            var responseToken = await conrtoller.HandleHttpRequestAsync(data);

            // Assert controller response status is Wait.
            Assert.Equal(responseToken["Status"], JStatus.Wait.JToken["Status"]);

            // Make sure a new instance is requested.
            var requestedInstance = await new RequestedInstance(arenaMetaId).LoadAsync();

            Assert.NotNull(requestedInstance);
        }
Exemplo n.º 5
0
        public async void SlotOfDisconnectedPlayerIsFree()
        {
            var serverIp     = "Test_SlotOfDisconnectedPlayerIsFree";
            var instancePort = "Test_SlotOfDisconnectedPlayerIsFree";
            var arenaMetaId  = "Test_SlotOfDisconnectedPlayerIsFree";

            // Create test arena meta if it doesn't exist.
            var arenaMeta = await new ArenaMeta(arenaMetaId).LoadAsync();

            if (arenaMeta == null)
            {
                arenaMeta            = new ArenaMeta(arenaMetaId);
                arenaMeta.MaxPlayers = 10;
                await arenaMeta.InsertAsync();
            }

            // Create test server with test instance.
            var instance = new ArenaInstance(arenaMetaId, instancePort);

            instance.FreeSlots--;
            var server = await Helpers.CreateTestServer(serverIp, instance : instance);

            // Mock data.
            var data = JToken.Parse($@"{{
                {Helpers.JsonServerCredentials},
                'Ip':'{serverIp}',
                'Port':'{instancePort}'
            }}");

            // Execute controller.
            var conrtoller    = new OnPlayerDisconnectedController();
            var responseToken = await conrtoller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure slot was freed.
            server = await server.LoadAsync();

            Assert.True(server.ActiveInstances[0].FreeSlots == 10);
        }
Exemplo n.º 6
0
        public async void DestroyedInstanceRemoved()
        {
            var serverIp     = "Test_DestroyedInstanceRemoved";
            var instancePort = "Test_DestroyedInstanceRemoved";
            var arenaMetaId  = "Test_DestroyedInstanceRemoved";

            // Create test arena meta if it doesn't exist.
            var arenaMeta = await new ArenaMeta(arenaMetaId).LoadAsync();

            if (arenaMeta == null)
            {
                arenaMeta = new ArenaMeta(arenaMetaId);
                await arenaMeta.InsertAsync();
            }

            // Create test server with test instance.
            var instance = new ArenaInstance(arenaMetaId, instancePort);
            var server   = await Helpers.CreateTestServer(serverIp, instance : instance);

            // Mock data.
            var data = JToken.Parse($@"{{
                'Ip':'{serverIp}',
                'Port':'{instancePort}', 
                {Helpers.JsonServerCredentials}
            }}");

            // Execute controller.
            var conrtoller    = new OnInstanceDestroyedController();
            var responseToken = await conrtoller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure instance was removed.
            server = await server.LoadAsync();

            Assert.True(server.ActiveInstances.Count == 0);
        }