예제 #1
0
        private void ExecuteInternal()
        {
            try
            {
                WiFiDirectTestLogger.Log("Beginning Discover/Connect scenario");

                // Do all discovers
                foreach (var discoveryParams in discoveryConnectParameters.DiscoveryParameters)
                {
                    var discoveryScenario = new ServicesDiscoveryScenario(seekerTestController, advertiserTestController, discoveryParams);
                    ServicesDiscoveryScenarioResult discoveryResult = discoveryScenario.Execute();
                    discoveryResults.Add(discoveryResult);

                    if (!discoveryResult.ScenarioSucceeded)
                    {
                        throw new Exception("Discovery failed!");
                    }
                }

                // BUG: [TH2] Fix race on back-to-back discoveries
                Task.Delay(500).Wait();

                // Do all connects
                foreach (var connectPreParams in discoveryConnectParameters.ConnectParameters)
                {
                    // Need to translate indices to handles
                    if (connectPreParams.DiscoveryResultIndex > discoveryResults.Count ||
                        connectPreParams.DiscoveryResultIndex < 0 ||
                        connectPreParams.DiscoveredHandleIndex > discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles.Count ||
                        connectPreParams.DiscoveredHandleIndex < 0)
                    {
                        throw new Exception("Bad connect parameters! Index out of range for discovered device");
                    }
                    WFDSvcWrapperHandle discoveredDevice = discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles[connectPreParams.DiscoveredHandleIndex];

                    // Now run scenario

                    ServicesConnectParameters connectParams = new ServicesConnectParameters(
                        discoveredDevice,
                        connectPreParams.AdvertiserHandle,
                        connectPreParams.Options
                        );

                    var connectScenario = new ServicesConnectScenario(seekerTestController, advertiserTestController, connectParams);
                    ServicesConnectScenarioResult connectResult = connectScenario.Execute();
                    connectResults.Add(connectResult);

                    if (!connectResult.ScenarioSucceeded)
                    {
                        throw new Exception("Connect failed!");
                    }
                }

                succeeded = true;
            }
            catch (Exception e)
            {
                WiFiDirectTestLogger.Error("Caught exception while executing service discover/connect scenario: {0}", e);
            }
        }
예제 #2
0
        public void DiscoverUnpublishConnectFails()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish/Discover
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverParameters discoverParams = new ServicesPublishDiscoverParameters(
                    serviceName
                    );

                var publishDiscoverResults = ExecutePublishDiscoverScenario(discoverParams);

                // Verify results before we start using them
                Verify.AreEqual(1, publishDiscoverResults.PublishResults.Count);
                Verify.AreEqual(1, publishDiscoverResults.DiscoveryResults.Count);
                Verify.AreEqual(1, publishDiscoverResults.DiscoveryResults[0].DiscoveryHandles.Count);

                // Unpublish
                ServicesUnpublishParameters unpublishParams = new ServicesUnpublishParameters(
                    publishDiscoverResults.PublishResults[0].AdvertiserHandle,
                    false
                    );
                ExecuteUnpublishScenario(unpublishParams);

                // Connect (fail)
                ServicesConnectParameters connectParams = new ServicesConnectParameters(
                    publishDiscoverResults.DiscoveryResults[0].DiscoveryHandles[0],
                    publishDiscoverResults.PublishResults[0].AdvertiserHandle,
                    new ServicesConnectOptions(expectConnectSuccess: false)
                    );
                ExecuteConnectScenario(connectParams);
            }
        }
 public ServicesConnectScenario(
     WiFiDirectTestController seekerWFDController,
     WiFiDirectTestController advertiserWFDController,
     ServicesConnectParameters connectParameters
     )
 {
     this.seekerWFDController     = seekerWFDController;
     this.advertiserWFDController = advertiserWFDController;
     this.connectParameters       = connectParameters;
 }
예제 #4
0
        ServicesConnectScenarioResult ExecuteConnectScenario(ServicesConnectParameters connectParams)
        {
            ServicesConnectScenario scenario = new ServicesConnectScenario(
                localWFDController,
                remoteWFDController,
                connectParams
                );
            ServicesConnectScenarioResult scenarioResult = scenario.Execute();

            Verify.IsTrue(scenarioResult.ScenarioSucceeded);

            return(scenarioResult);
        }