Пример #1
0
        public void LaunchInChrome(IChromeClientsLauncher chromeClientsLauncher,
                                   string workingDirectory)
        {
            string         launchUrl;
            StadiaEndpoint endpoint = chromeClientsLauncher.LaunchParams.Endpoint;

            switch (endpoint)
            {
            case StadiaEndpoint.TestClient:
            {
                launchUrl = chromeClientsLauncher.MakeTestClientUrl(LaunchName);
                break;
            }

            case StadiaEndpoint.PlayerEndpoint:
            {
                launchUrl = chromeClientsLauncher.MakePlayerClientUrl(LaunchId);
                break;
            }

            default:
                throw new ArgumentOutOfRangeException(
                          "LaunchInChrome doesn't support this endpoint: " + endpoint);
            }

            chromeClientsLauncher.LaunchGame(launchUrl, workingDirectory);
        }
        public void ToLaunchGameRequestNotSupportedTestAccounts(StadiaEndpoint endpoint)
        {
            LaunchParams parameters = ValidParams;

            parameters.Endpoint             = endpoint;
            parameters.TestAccount          = "a/b/c";
            parameters.TestAccountGamerName = "gamer#1234";

            ConfigStatus status =
                _parametersConverter.ToLaunchGameRequest(parameters, out LaunchGameRequest _);

            Assert.That(status.IsWarningLevel, Is.EqualTo(true));
            Assert.That(status.WarningMessage,
                        Does.Contain("Test accounts are not supported by any player endpoint"));
            Assert.That(status.WarningMessage, Does.Contain("gamer#1234"));
        }
        public void ToLaunchGameRequestNotSupportedQueryParams(StadiaEndpoint endpoint)
        {
            LaunchParams parameters = ValidParams;

            parameters.Endpoint    = endpoint;
            parameters.QueryParams = "a=42&vars=valid=1";

            ConfigStatus status =
                _parametersConverter.ToLaunchGameRequest(parameters, out LaunchGameRequest _);

            Assert.That(status.IsWarningLevel, Is.EqualTo(true));
            Assert.That(status.WarningMessage,
                        Does.Contain("are not supported by any player endpoint"));
            Assert.That(status.WarningMessage, Does.Contain("a=42"));
            Assert.That(status.WarningMessage, Does.Not.Contain("vars=valid=1"));
        }
Пример #4
0
        public void LaunchSuspendedWhenEndpointSetSucceeds(
            [Values(StadiaEndpoint.AnyEndpoint, StadiaEndpoint.PlayerEndpoint,
                    StadiaEndpoint.TestClient)]
            StadiaEndpoint endpoint)
        {
            var             debugSessionLauncherFactory = Substitute.For <IDebugSessionLauncherFactory>();
            IGgpDebugEngine debugEngine  = CreateGgpDebugEngine(debugSessionLauncherFactory);
            string          options      = null;
            var             launchParams = new LaunchParams {
                Endpoint = endpoint
            };
            string args = Convert.ToBase64String(
                Encoding.UTF8.GetBytes(new JsonUtil().Serialize(launchParams)));
            var debugPort = Substitute.For <IDebugPort2>();
            int result    = debugEngine.LaunchSuspended("", debugPort, _exePath, args, null, null,
                                                        options, enum_LAUNCH_FLAGS.LAUNCH_DEBUG, 0, 0,
                                                        0, null, out var _);

            Assert.That(result, Is.EqualTo(VSConstants.S_OK));
        }
        public void ToLaunchGameRequestEnableDeveloperResumeOffer(
            StadiaEndpoint endpoint, bool enableOffer)
        {
            LaunchParams parameters = ValidParams;

            parameters.Endpoint = endpoint;

            // AnyEndpoint and PlayerEndpoint produce warnings
            // when TestAccount or QueryParams are set. We want to receive OK parsing status,
            // so we make sure those settings are empty.
            parameters.TestAccount = "";
            parameters.QueryParams = "";

            ConfigStatus status =
                _target.ToLaunchGameRequest(parameters, out LaunchGameRequest request);

            Assert.That(status.IsOk, Is.EqualTo(true));
            Assert.IsNotNull(request);
            Assert.That(request.EnableDeveloperResumeOffer, Is.EqualTo(enableOffer));
        }
Пример #6
0
        public async Task LaunchNoDebugAsync([Values(false, true)] bool renderdoc,
                                             [Values(false, true)] bool rgp,
                                             [Values(null, "optprintasserts")]
                                             string vulkanDriverVariant,
                                             [Values(StadiaEndpoint.PlayerEndpoint,
                                                     StadiaEndpoint.TestClient,
                                                     StadiaEndpoint.AnyEndpoint)]
                                             StadiaEndpoint endpoint)
        {
            _project.GetLaunchRenderDocAsync().Returns(renderdoc);
            _project.GetLaunchRgpAsync().Returns(rgp);
            _project.GetVulkanDriverVariantAsync().Returns(vulkanDriverVariant);
            _project.GetEndpointAsync().Returns(endpoint);

            var gamelets = new List <Gamelet>
            {
                new Gamelet
                {
                    Id     = _testGameletId,
                    Name   = _testGameletName,
                    IpAddr = _testGameletIp,
                    State  = GameletState.Reserved,
                }
            };

            _gameletClient.ListGameletsAsync().Returns(Task.FromResult(gamelets));

            _gameletSelector.TrySelectAndPrepareGamelet(Arg.Any <string>(),
                                                        Arg.Any <DeployOnLaunchSetting>(), gamelets,
                                                        Arg.Any <TestAccount>(), Arg.Any <string>(),
                                                        out Gamelet _).Returns(x =>
            {
                x[_outVariableIndex] = gamelets[0];
                return(true);
            });

            _gameLauncher.LaunchGameApiEnabled.Returns(true);
            _gameLauncher.CreateLaunch(Arg.Any <LaunchParams>())
            .Returns(_gameLaunch);

            var launchSettings = await QueryDebugTargetsAsync(DebugLaunchOptions.NoDebug);

            Assert.That(launchSettings.Count, Is.EqualTo(1));
            Assert.That(DebugLaunchOptions.NoDebug | DebugLaunchOptions.MergeEnvironment,
                        Is.EqualTo(launchSettings[0].LaunchOptions));
            Assert.That(launchSettings[0].CurrentDirectory, Is.EqualTo(_testProjectDir));
            Assert.That(launchSettings[0].Executable,
                        Is.EqualTo(Environment.SystemDirectory + "\\cmd.exe"));

            _launchCommandFormatter.Parse(launchSettings[0].Arguments,
                                          out LaunchParams launchParams,
                                          out string launchName);
            Assert.That(launchParams.Account, Is.EqualTo(_testAccount));
            Assert.That(launchParams.SdkVersion, Is.EqualTo(_sdkVersionString));
            Assert.That(launchParams.Endpoint, Is.EqualTo(endpoint));
            Assert.That(launchName, Is.EqualTo(_gameLaunch.LaunchName));

            await _remoteDeploy.Received()
            .DeployGameExecutableAsync(_project, new SshTarget(gamelets[0]),
                                       Arg.Any <ICancelable>(),
                                       Arg.Any <IAction>());

            AssertMetricRecorded(DeveloperEventType.Types.Type.VsiDebugSetupQueries,
                                 DeveloperEventStatus.Types.Code.Success);
            AssertMetricRecorded(DeveloperEventType.Types.Type.VsiDeployBinary,
                                 DeveloperEventStatus.Types.Code.Success);
        }