示例#1
0
        /// <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);
        }
示例#4
0
        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));
        }
示例#6
0
        /// <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;
        }
示例#7
0
        /*
        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;
        }
示例#8
0
        /// <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);
        }
示例#9
0
        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);
        }