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); }
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); }
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)); }
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); }
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); }
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); }