/// <summary> /// Gets account for testing the Logic. /// </summary> /// <returns> a Test account.</returns> private Account GetTestAcc() { var testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(new LatLon(50.97695325, 11.02396488)), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; var client = new TcpClient(); client.Connect( Client.Common.Constants.ClientConstants.TCP_SERVER, Client.Common.Constants.ClientConstants.TCP_PORT); var testStream = client.GetStream(); testPackage.Send(testStream); var testPackageIn = Packet.Receive(testStream); client.Close(); var data = JsonConvert.DeserializeObject <Core.Connections.LoginResponse>(testPackageIn.Content); return(new Account(data.AccountId)); }
public void Login() { var testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(8108, 15), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; var client = new TcpClient(); client.Connect( Client.Common.Constants.ClientConstants.TCP_SERVER, Client.Common.Constants.ClientConstants.TCP_PORT); Assert.True(client.Connected); var testStream = client.GetStream(); testPackage.Send(testStream); var testPackageIn = Packet.Receive(testStream); client.Close(); Assert.True(!client.Connected); var data = JsonConvert.DeserializeObject <Core.Connections.LoginResponse>(testPackageIn.Content); Assert.AreEqual(Core.Connections.LoginResponse.ReponseStatus.OK, data.Status); Assert.IsNotNull(data.Status); Assert.IsNotNull(data.AccountId); // Test False logins testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(8108, 15), "Maria", "Musterfrauxxx"); testJson = JsonConvert.SerializeObject(testLoginRequest); testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; testStream = this.GetStream(); testPackage.Send(testStream); data = JsonConvert.DeserializeObject <Core.Connections.LoginResponse>(Packet.Receive(testStream).Content); Assert.AreNotEqual(Core.Connections.LoginResponse.ReponseStatus.OK, data.Status); }
public void LoadRegion() { var testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(100, 100), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; var testStream = this.GetStream(); testPackage.Send(testStream); var testPackageIn = Packet.Receive(testStream); var loginData = JsonConvert.DeserializeObject <Core.Connections.LoginResponse>(testPackageIn.Content); var testRegion = new Core.Models.RegionPosition[] { new Core.Models.RegionPosition(100, 100), }; var testRequest = new Core.Connections.LoadRegionsRequest( loginData.SessionID, new Core.Models.Position(100, 100), testRegion); testJson = JsonConvert.SerializeObject(testRequest); testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.LoadEntities; testStream = this.GetStream(); testPackage.Send(testStream); testPackageIn = Packet.Receive(testStream); var data = JsonConvert.DeserializeObject <Core.Connections.Response>(testPackageIn.Content); Assert.AreEqual(Core.Connections.Response.ReponseStatus.OK, data.Status); }
public void LoadRegion() { var testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(100, 100), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; var testStream = this.GetStream(); testPackage.Send(testStream); var testPackageIn = Packet.Receive(testStream); var loginData = JsonConvert.DeserializeObject<Core.Connections.LoginResponse>(testPackageIn.Content); var testRegion = new Core.Models.RegionPosition[] { new Core.Models.RegionPosition(100, 100), }; var testRequest = new Core.Connections.LoadRegionsRequest( loginData.SessionID, new Core.Models.Position(100, 100), testRegion); testJson = JsonConvert.SerializeObject(testRequest); testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.LoadEntities; testStream = this.GetStream(); testPackage.Send(testStream); testPackageIn = Packet.Receive(testStream); var data = JsonConvert.DeserializeObject<Core.Connections.Response>(testPackageIn.Content); Assert.AreEqual(Core.Connections.Response.ReponseStatus.OK, data.Status); }
/// <summary> /// Gets a login instance. /// </summary> /// <returns>The login.</returns> private Core.Connections.LoginResponse GetLogin() { var testStream = this.GetStream(); var testLoginRequest = new Core.Connections.LoginRequest( this.TestPosition(), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; testPackage.Send(testStream); return(JsonConvert.DeserializeObject <Core.Connections.LoginResponse>(Packet.Receive(testStream).Content)); }
/// <summary> /// Login async to the server and save the sessionID. /// </summary> /// <returns>The Account.</returns> /// <param name="currentGamePosition">Current game position.</param> /// <param name="user">User which wanted to log in.</param> /// <param name="password">Password of the user.</param> public async Task<Account> LoginAsync(Core.Models.Position currentGamePosition, string user, string password) { var request = new Core.Connections.LoginRequest(currentGamePosition, user, password); var json = JsonConvert.SerializeObject(request); try { var jsonFromServer = await TcpConnection.Connector.SendAsync(Core.Connection.MethodType.Login, json); var loginResponse = JsonConvert.DeserializeObject<Core.Connections.LoginResponse>(jsonFromServer); if (loginResponse.Status == Core.Connections.LoginResponse.ReponseStatus.OK) { m_sessionID = loginResponse.SessionID; GameAppDelegate.ServerTime = loginResponse.ServerTime; // TODO: this shouldn't be set here, change it return new Account(loginResponse.AccountId, user); } } catch (Exception ex) { Core.Helper.Logging.Error(ex.Message); } return null; }
/* static int REGION_POS_X = 166148; static int REGION_POS_Y = 104835; static int RUNS = 10; static int REGIONS_X = 100; static int REGIONS_Y = 100; static int AFFECTED_REGIONS = 4; static int REQUESTS_PER_REGION = 32; static List<RegionPosition> NORTH_WEST = new List<RegionPosition> () { new RegionPosition (0, 0), new RegionPosition (-1, 1), new RegionPosition (0, 1), new RegionPosition (-1, 0), }; static List<RegionPosition> NORTH_EAST = new List<RegionPosition> () { new RegionPosition (0, 0), new RegionPosition (1, 1), new RegionPosition (0, 1), new RegionPosition (1, 0), }; static List<RegionPosition> SOUTH_WEST = new List<RegionPosition> () { new RegionPosition (0, 0), new RegionPosition (-1, -1), new RegionPosition (0, -1), new RegionPosition (-1, 0), }; static List<RegionPosition> SOUTH_EAST = new List<RegionPosition> () { new RegionPosition (0, 0), new RegionPosition (1, -1), new RegionPosition (0, -1), new RegionPosition (1, 0), }; static List<List<RegionPosition>> POSSIBLE_AFFECTED_REGIONS = new List<List<RegionPosition>> () { NORTH_WEST, NORTH_EAST, SOUTH_WEST, SOUTH_EAST }; public static void PreloadRegions() { var regionManagerC = @base.control.Controller.Instance.RegionManagerController; for (var x = 0; x < REGIONS_X; ++x) { for (var y = 0; y < REGIONS_Y; ++y) { var regionPosition = new RegionPosition (REGION_POS_X + x, REGION_POS_Y + y); regionManagerC.GetRegion (regionPosition); } } } private static void GenerateRequests(Account account) { var api = server.control.APIController.Instance; var rng = new Random(); var regionManagerC = @base.control.Controller.Instance.RegionManagerController; var maxRequests = REQUESTS_PER_REGION * REGIONS_X * REGIONS_Y; for (var requestNr = 0; requestNr < maxRequests; ++requestNr) { var affectedRegions = new ConcurrentBag<Region> (); var centralPosition = new RegionPosition(REGION_POS_X + rng.Next() % REGIONS_X, REGION_POS_Y + rng.Next() % REGIONS_Y); var affectedPositions = POSSIBLE_AFFECTED_REGIONS [rng.Next() % POSSIBLE_AFFECTED_REGIONS.Count]; for (var regionNr = 0; regionNr < AFFECTED_REGIONS; ++regionNr) { var affectedRegionPosition = new RegionPosition (centralPosition.RegionX + affectedPositions [regionNr].RegionX, centralPosition.RegionY + affectedPositions [regionNr].RegionY); affectedRegions.Add (regionManagerC.GetRegion(affectedRegionPosition)); } var paras = new ConcurrentDictionary<string, object>(); paras["Regions"] = affectedRegions; var action = new @base.model.Action(account, @base.model.Action.ActionType.TestAction, paras); var actions = new @base.model.Action[] {action}; api.DoAction(account, actions); } } private static void WaitUntilFinished() { var api = server.control.APIController.Instance; var done = false; while (!done) { done = true; for (var i = 0; i < server.model.ServerConstants.ACTION_THREADS; ++i) { var x = api.m_threadingInfos [0].Count; var y = api.m_threadingInfos [1].Count; if (api.m_threadingInfos[i].Count > 0) { done = false; Thread.Sleep (10); } } } } public static void TestWriter() { var regionManagerC = @base.control.Controller.Instance.RegionManagerController; var account = new Account (0); var accountC = new server.control.AccountController(account, "passwd"); var rng = new Random(); Console.WriteLine("Start"); for (var runNr = 0; runNr < RUNS; ++runNr) { GenerateRequests (account); Console.WriteLine("Threading-Start (" + server.model.ServerConstants.ACTION_THREADS.ToString() + ")"); Stopwatch runWatch = new Stopwatch(); runWatch.Start(); //server.MvcApplication.Phase = server.MvcApplication.Phases.Running; WaitUntilFinished (); //server.MvcApplication.Phase = server.MvcApplication.Phases.Pause; runWatch.Stop(); TimeSpan ts = runWatch.Elapsed; // Format and display the TimeSpan value. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine("Run-Zeit " + elapsedTime); } } public static void TestReader() { } */ public static void Main(string[] args) { //Tests.TcpConnectionTest. //var json = "{\"Status\":0,\"Actions\":[[],[],[],[],[],[],[],[],[],[],[],[],[{\"Parameters\":{\"CreatePosition\":{\"X\":5316345,\"Y\":3354734},\"CreateBuilding\":276},\"Type\":2}],[],[],[],[],[],[],[],[],[],[],[],[]],\"Entities\":[]}"; //var entitiesResponse = JsonConvert.DeserializeObject<core.connection.Response>(json); //throw new Exception(); var request1 = new Core.Connections.LoginRequest( new Core.Models.Position(1337, 42), // take the current location from the geolocator "Max", "Musterpassword"); var json1 = JsonConvert.SerializeObject(request1); System.Console.WriteLine(json1); var response2 = new Core.Connections.LoginResponse(); response2.AccountId = 13; response2.SessionID = Guid.NewGuid(); response2.Status = Core.Connections.LoginResponse.ReponseStatus.OK; var json2 = JsonConvert.SerializeObject(response2); System.Console.WriteLine(json2); var response5 = new Core.Connections.Response(); response5.Actions = new LinkedList<LinkedList<Core.Models.Action>>(); response5.Entities = new LinkedList<LinkedList<Core.Models.Entity>>(); response5.Status = Core.Connections.Response.ReponseStatus.OK; var json5 = JsonConvert.SerializeObject(response5); System.Console.WriteLine(json5); System.Console.Read(); //var entitiesResponse = JsonConvert.DeserializeObject<core.connection.Response>(json); //var app = new server.MvcApplication (); //app.Application_Start (); //server.MvcApplication.Phase = server.MvcApplication.Phases.Pause; //PreloadRegions (); //TestWriter (); //TestReader (); //server.MvcApplication.Phase = server.MvcApplication.Phases.Exit; }
/// <summary> /// Gets a login instance. /// </summary> /// <returns>The login.</returns> private Core.Connections.LoginResponse GetLogin() { var testStream = this.GetStream(); var testLoginRequest = new Core.Connections.LoginRequest( this.TestPosition(), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; testPackage.Send(testStream); return JsonConvert.DeserializeObject<Core.Connections.LoginResponse>(Packet.Receive(testStream).Content); }
public void Login() { var testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(8108, 15), "Maria", "Musterfrau"); var testJson = JsonConvert.SerializeObject(testLoginRequest); var testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; var client = new TcpClient(); client.Connect( Client.Common.Constants.ClientConstants.TCP_SERVER, Client.Common.Constants.ClientConstants.TCP_PORT); Assert.True(client.Connected); var testStream = client.GetStream(); testPackage.Send(testStream); var testPackageIn = Packet.Receive(testStream); client.Close(); Assert.True(!client.Connected); var data = JsonConvert.DeserializeObject<Core.Connections.LoginResponse>(testPackageIn.Content); Assert.AreEqual(Core.Connections.LoginResponse.ReponseStatus.OK, data.Status); Assert.IsNotNull(data.Status); Assert.IsNotNull(data.AccountId); // Test False logins testLoginRequest = new Core.Connections.LoginRequest( new Core.Models.Position(8108, 15), "Maria", "Musterfrauxxx"); testJson = JsonConvert.SerializeObject(testLoginRequest); testPackage = new Packet(); testPackage.Content = testJson; testPackage.MethodType = MethodType.Login; testStream = this.GetStream(); testPackage.Send(testStream); data = JsonConvert.DeserializeObject<Core.Connections.LoginResponse>(Packet.Receive(testStream).Content); Assert.AreNotEqual(Core.Connections.LoginResponse.ReponseStatus.OK, data.Status); }