Пример #1
0
        public void LoginOrRegister(UUnitTestContext testContext)
        {
            var loginRequest = new LoginWithCustomIDRequest
            {
                TitleId       = PlayFabSettings.staticSettings.TitleId,
                CustomId      = PlayFabSettings.BuildIdentifier,
                CreateAccount = true
            };
            var loginTask = clientApi.LoginWithCustomIDAsync(loginRequest, null, testTitleData.extraHeaders);

            ContinueWithContext(loginTask, testContext, LoginOrRegisterContinued, true, "User login failed", true);
        }
        private static async Task PostTestResultsToCloudScript(TestSuiteReport testReport)
        {
#if !DISABLE_PLAYFABCLIENT_API
            PfClient.GetSettings().TitleId = TestTitleData.titleId;
            var loginRequest = new LoginWithCustomIDRequest
            {
                CustomId      = PlayFabSettings.BuildIdentifier,
                CreateAccount = true,
            };
            var saveRequest = new ExecuteCloudScriptRequest
            {
                FunctionName      = "SaveTestData",
                FunctionParameter = new Dictionary <string, object> {
                    { "customId", PlayFabSettings.BuildIdentifier }, { "testReport", new[] { testReport } }
                },
                GeneratePlayStreamEvent = true
            };
            try
            {
                var loginResult = await PfClient.LoginWithCustomIDAsync(loginRequest);

                var saveResult = await PfClient.ExecuteCloudScriptAsync(saveRequest);

                _onComplete?.Invoke(saveResult);
            }
            catch (Exception e)
            {
                var failResult = new PlayFabResult <ExecuteCloudScriptResult>();
                failResult.Error = new PlayFabError();
                failResult.Error.ErrorMessage = e.ToString();
                _onComplete?.Invoke(failResult);
            }
#endif
        }
        public void Instance2Login(UUnitTestContext testContext)
        {
            var loginRequest = new LoginWithCustomIDRequest
            {
                CustomId      = PlayFabSettings.BuildIdentifier,
                CreateAccount = true,
            };
            var loginTask = client2.LoginWithCustomIDAsync(loginRequest);

            loginTask.Wait();

            testContext.True(player2.IsClientLoggedIn(), "player2 client login failed, ");
            testContext.True(client2.IsClientLoggedIn(), "client2 client login failed");
            testContext.True(player2.IsEntityLoggedIn(), "player2 entity login failed");
            testContext.True(auth2.IsEntityLoggedIn(), "auth2 entity login failed");

            testContext.False(PlayFabClientAPI.IsClientLoggedIn(), "p2 client context leaked to static context");
            testContext.False(PlayFabAuthenticationAPI.IsEntityLoggedIn(), "p2 entity context leaked to static context");

            // Verify useful player information
            testContext.NotNull(player2.PlayFabId);
            testContext.NotNull(player2.EntityId);
            testContext.NotNull(player2.EntityType);

            testContext.EndTest(UUnitFinishState.PASSED, PlayFabSettings.staticSettings.TitleId + ", " + loginTask.Result.Result.PlayFabId);
        }
Пример #4
0
        private static async Task Run(string titleId, string playerId, bool chinaVer, bool listQosForTitle, bool verbose)
        {
            PlayFabApiSettings settings = new PlayFabApiSettings()
            {
                TitleId = titleId
            };
            PlayFabClientInstanceAPI clientApi = new PlayFabClientInstanceAPI(settings);

            // Login
            var loginRequest = new LoginWithCustomIDRequest()
            {
                CustomId      = playerId,
                CreateAccount = true
            };
            PlayFabResult <LoginResult> login = await clientApi.LoginWithCustomIDAsync(loginRequest);

            if (login.Error != null)
            {
                Console.WriteLine(login.Error.ErrorMessage);
                throw new Exception($"Login failed with HttpStatus={login.Error.HttpStatus}");
            }
            Console.WriteLine($"Logged in player {login.Result.PlayFabId} (CustomId={playerId})");
            Console.WriteLine();

            // Measure QoS
            Stopwatch sw = Stopwatch.StartNew();

            PlayFabSDKWrapper.QoS.PlayFabQosApi qosApi    = new PlayFabSDKWrapper.QoS.PlayFabQosApi(settings, clientApi.authenticationContext);
            PlayFabSDKWrapper.QoS.QosResult     qosResult = await qosApi.GetQosResultAsync(250, degreeOfParallelism : 4, pingsPerRegion : 10, listQosForTitle : listQosForTitle, chinaVer : chinaVer);

            if (qosResult.ErrorCode != 0)
            {
                Console.WriteLine(qosResult.ErrorMessage);
                throw new Exception($"QoS ping failed with ErrorCode={qosResult.ErrorCode}");
            }

            Console.WriteLine($"Pinged QoS servers in {sw.ElapsedMilliseconds}ms with results:");

            if (verbose)
            {
                string resultsStr = JsonConvert.SerializeObject(qosResult.RegionResults, Formatting.Indented);
                Console.WriteLine(resultsStr);
            }

            int timeouts = qosResult.RegionResults.Sum(x => x.NumTimeouts);

            Console.WriteLine(string.Join(Environment.NewLine,
                                          qosResult.RegionResults.Select(x => $"{x.Region} - {x.LatencyMs}ms")));

            Console.WriteLine($"NumTimeouts={timeouts}");
            Console.WriteLine();

            Console.ReadKey();
        }
Пример #5
0
        public override void SetUp(UUnitTestContext testContext)
        {
            testTitleData = TestTitleDataLoader.Load(null);
            PlayFabSettings.staticSettings.TitleId = testTitleData.titleId;

            var task = clientApi.LoginWithCustomIDAsync(new LoginWithCustomIDRequest {
                CreateAccount = true, CustomId = TEST_CUSTOM_ID, TitleId = testTitleData.titleId
            });

            task.Wait();

            testContext.True(clientApi.IsClientLoggedIn(), "User login not successful: " + task.Result.Error?.GenerateErrorReport());
        }
Пример #6
0
        private int Login(string titleId, string buildIdentifier, TestTitleData testTitleData)
        {
            PlayFabSettings.staticSettings.TitleId = titleId;
            var task = clientApi.LoginWithCustomIDAsync(new LoginWithCustomIDRequest {
                TitleId = titleId, CustomId = buildIdentifier, CreateAccount = true
            }, null, testTitleData.extraHeaders);

            task.Wait();
            var returnCode = clientApi.IsClientLoggedIn() ? 0 : 1;

            if (returnCode != 0)
            {
                JcuUtil.FancyWriteToConsole(ConsoleColor.Red, "Failed to log in using CustomID: " + titleId + ", " + buildIdentifier);
                JcuUtil.FancyWriteToConsole(ConsoleColor.Red, task.Result.Error?.GenerateErrorReport());
            }
            else
            {
                JcuUtil.FancyWriteToConsole(ConsoleColor.Gray, "Login successful, PlayFabId: " + task.Result.Result.PlayFabId);
            }
            return(returnCode);
        }
Пример #7
0
        public void QosTest(UUnitTestContext testContext)
        {
            var loginWithCustomIdRequest = new LoginWithCustomIDRequest()
            {
                CreateAccount = true,
                CustomId      = "test_Instance1"
            };

            try
            {
                clientApi.LoginWithCustomIDAsync(loginWithCustomIdRequest, null, testTitleData.extraHeaders).Wait();
            }
            catch (AggregateException aggregateException) when(aggregateException.InnerException != null)
            {
                throw aggregateException.InnerException;
            }

            PlayFabQosApi playFabQosApi = new PlayFabQosApi();
            QosResult     qoSResult     = playFabQosApi.GetQosResultAsync().Result;

            testContext.IntEquals(0, qoSResult.ErrorCode, $"Qos ErrorMessage: {qoSResult.ErrorMessage}");
            testContext.EndTest(UUnitFinishState.PASSED, null);
        }
Пример #8
0
        private static async Task Run(string titleId, string playerId, string buildId, bool verbose)
        {
            PlayFabApiSettings settings = new PlayFabApiSettings()
            {
                TitleId = titleId
            };
            PlayFabClientInstanceAPI clientApi = new PlayFabClientInstanceAPI(settings);

            // Login
            var loginRequest = new LoginWithCustomIDRequest()
            {
                CustomId      = playerId,
                CreateAccount = true
            };
            PlayFabResult <LoginResult> login = await clientApi.LoginWithCustomIDAsync(loginRequest);

            if (login.Error != null)
            {
                Console.WriteLine(login.Error.ErrorMessage);
                throw new Exception($"Login failed with HttpStatus={login.Error.HttpStatus}");
            }
            Console.WriteLine($"Logged in player {login.Result.PlayFabId} (CustomId={playerId})");
            Console.WriteLine();

            // Measure QoS
            Stopwatch     sw        = Stopwatch.StartNew();
            PlayFabQosApi qosApi    = new PlayFabQosApi(settings, clientApi.authenticationContext);
            QosResult     qosResult = await qosApi.GetQosResultAsync(250, degreeOfParallelism : 4, pingsPerRegion : 10);

            if (qosResult.ErrorCode != 0)
            {
                Console.WriteLine(qosResult.ErrorMessage);
                throw new Exception($"QoS ping failed with ErrorCode={qosResult.ErrorCode}");
            }

            Console.WriteLine($"Pinged QoS servers in {sw.ElapsedMilliseconds}ms with results:");

            if (verbose)
            {
                string resultsStr = JsonConvert.SerializeObject(qosResult.RegionResults, Formatting.Indented);
                Console.WriteLine(resultsStr);
            }

            int timeouts = qosResult.RegionResults.Sum(x => x.NumTimeouts);

            Console.WriteLine(string.Join(Environment.NewLine,
                                          qosResult.RegionResults.Select(x => $"{x.Region} - {x.LatencyMs}ms")));

            Console.WriteLine($"NumTimeouts={timeouts}");
            Console.WriteLine();

            // Allocate a server
            string        sessionId        = Guid.NewGuid().ToString();
            List <string> preferredRegions = qosResult.RegionResults
                                             .Where(x => x.ErrorCode == (int)QosErrorCode.Success)
                                             .Select(x => x.Region).ToList();

            PlayFabMultiplayerInstanceAPI mpApi = new PlayFabMultiplayerInstanceAPI(settings, clientApi.authenticationContext);
            PlayFabResult <RequestMultiplayerServerResponse> server =
                await mpApi.RequestMultiplayerServerAsync(new RequestMultiplayerServerRequest()
            {
                BuildId          = buildId,
                PreferredRegions = preferredRegions,
                SessionId        = sessionId
            }
                                                          );

            if (server.Error != null)
            {
                Console.WriteLine(server.Error.ErrorMessage);
                throw new Exception($"Allocation failed with HttpStatus={server.Error.HttpStatus}");
            }

            string serverLoc = $"{server.Result.IPV4Address}:{server.Result.Ports[0].Num}";

            Console.WriteLine($"Allocated server {serverLoc}");

            // Issue Http request against the server
            using (HttpResponseMessage getResult = await HttpClient.GetAsync("http://" + serverLoc))
            {
                getResult.EnsureSuccessStatusCode();

                Console.WriteLine("Received response:");
                string responseStr = await getResult.Content.ReadAsStringAsync();

                Console.WriteLine(responseStr);
                Console.WriteLine();
            }
        }