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); } }
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; }
ServicesConnectScenarioResult ExecuteConnectScenario(ServicesConnectParameters connectParams) { ServicesConnectScenario scenario = new ServicesConnectScenario( localWFDController, remoteWFDController, connectParams ); ServicesConnectScenarioResult scenarioResult = scenario.Execute(); Verify.IsTrue(scenarioResult.ScenarioSucceeded); return(scenarioResult); }