private bool VerifyAPsAreInScanList(string ssid) { testLogger.LogComment(string.Format(CultureInfo.InvariantCulture, "Verify SSID {0} is in scan list", ssid)); using (Wlan wlanApi = new Wlan()) { var wlanInterfaceList = wlanApi.EnumWlanInterfaces(); Verify.IsTrue(wlanInterfaceList.Count >= 1, string.Format(CultureInfo.InvariantCulture, "wlanInterfaceList.Count = {0}", wlanInterfaceList.Count)); var wlanInterface = wlanInterfaceList[0]; wlanApi.TryScan(wlanInterface.Id, true, new TimeSpan(0, 0, 10)); Collection <WlanNetwork> list = wlanApi.GetAvailableNetworkList(wlanInterface.Id); bool found = false; foreach (var network in list) { if (String.Compare(network.Ssid, ssid, StringComparison.OrdinalIgnoreCase) == 0) { testLogger.LogComment(string.Format(CultureInfo.InvariantCulture, "Found SSID {0}", ssid)); found = true; break; } } if (found == false) { testLogger.LogComment(string.Format(CultureInfo.InvariantCulture, "Did not find SSID {0}", ssid)); } return(found); } }
public void TestDot11wConnection() { Guid interfaceId; testLogger.LogComment("Testing 802.11w Connection to AP with SSID " + dot11wSSID + " and password " + dot11wPassword); using (Wlan wlanApi = new Wlan()) { var wlanInterfaceList = wlanApi.EnumWlanInterfaces(); Verify.IsTrue(wlanInterfaceList.Count >= 1, string.Format(CultureInfo.InvariantCulture, "wlanInterfaceList.Count = {0}", wlanInterfaceList.Count)); var wlanInterface = wlanInterfaceList[0]; interfaceId = wlanInterface.Id; // Delete Profile if present DisconnectAndDeleteProfile(wlanApi); // Scan testLogger.LogComment("Scan"); wlanApi.Scan(wlanInterface.Id, false, ScanWait); // Check to see if SSID is in scan list testLogger.LogComment("Check to see if SSID is in scan list"); var networkList = wlanApi.GetAvailableNetworkList(interfaceId); bool found = false; foreach (WlanNetwork network in networkList) { if (String.Compare(network.Ssid, dot11wSSID, StringComparison.Ordinal) == 0) { found = true; break; } } if (found == false) { testLogger.LogError("Could not find 11w router in scan list: " + dot11wSSID); testLogger.LogResult(TestResult.Failed); return; } else { testLogger.LogComment("Found the 11w router in the scan list: " + dot11wSSID); } // Create Profile string profile = GenerateProfile(); testLogger.LogComment("Creating Profile"); wlanApi.CreateProfile(interfaceId, profile); // Connect testLogger.LogComment("Connecting to AP"); wlanApi.ProfileConnect(interfaceId, dot11wSSID, new TimeSpan(0, 0, 30)); } // Check MFP Status bool mfpStatus = IsMfpNeogotiated(interfaceId); testLogger.LogComment("IsMfpNeogotiated == " + mfpStatus); if (mfpStatus == false) { testLogger.LogError("The device connected to the dot11w router but IsMfpNeogotiated == false"); testLogger.LogResult(TestResult.Failed); return; } if (enableSleepTest) { PowerManager powerManager; powerManager = new PowerManager(); // Wait for DHCP Stable testLogger.LogComment("Wait for DHCP to be stable"); Wlan.Sleep(1000 * 60 * 2); testLogger.LogComment("Going into Connected standby/Sleep for 1 minute"); powerManager.DeepestSleep(60); using (Wlan wlanApi = new Wlan()) { bool isConnected = IsConnected(wlanApi); if (isConnected == false) { testLogger.LogError("After waking from connected standby the device is no longer connected to the AP"); } else { testLogger.LogComment("After waking from connected standby the device is still connected to the AP"); } } // Check MFP Status mfpStatus = IsMfpNeogotiated(interfaceId); testLogger.LogComment("IsMfpNeogotiated == " + mfpStatus); if (mfpStatus == false) { testLogger.LogError("The device connected to the dot11w router but IsMfpNeogotiated == false"); return; } } }
public override void Run(string profileName1, string profileName2) { DateTime endTime = DateTime.Now.Add(new TimeSpan(0, 5, 0)); TimeSpan waiterTimeout = new TimeSpan(0, 0, 10); using (Wlan wlanApi = new Wlan()) { var wlanInterfaceList = wlanApi.EnumWlanInterfaces(); Verify.IsTrue(wlanInterfaceList.Count >= 1, string.Format(CultureInfo.InvariantCulture, "wlanInterfaceList.Count = {0}", wlanInterfaceList.Count)); var wlanInterface = wlanInterfaceList[0]; var radioStateList = wlanApi.GetRadioState(wlanInterface); if (radioStateList[0].SoftwareRadioState == RadioState.Off) { testLogger.LogComment("Turning Radio On"); WlanNotificationWaiter waiterOnSetup = wlanApi.CreateEventWaiter(WLAN_NOTIFICATION_MSM.wlan_notification_msm_radio_state_change); wlanApi.SetRadioState(wlanInterface, 0, true); waiterOnSetup.Wait(waiterTimeout); } try { while (DateTime.Now < endTime) { if (Random.Next(0, 2) == 1) { // Slow toggle testLogger.LogComment("Slow Toggle"); int iterations = Random.Next(10); for (int toggleLooper = 0; toggleLooper < iterations; toggleLooper++) { testLogger.LogComment("Turning Radio Off"); SlowToggles++; WlanNotificationWaiter waiterOff = wlanApi.CreateEventWaiter(WLAN_NOTIFICATION_MSM.wlan_notification_msm_radio_state_change); wlanApi.SetRadioState(wlanInterface, 0, false); waiterOff.Wait(waiterTimeout); testLogger.LogComment("Turning Radio On"); WlanNotificationWaiter waiterOn = wlanApi.CreateEventWaiter(WLAN_NOTIFICATION_MSM.wlan_notification_msm_radio_state_change); wlanApi.SetRadioState(wlanInterface, 0, true); waiterOn.Wait(waiterTimeout); } } else { // Fast Toggle testLogger.LogComment("Fast Toggle"); int iterations = Random.Next(10); for (int toggleLooper = 0; toggleLooper < iterations; toggleLooper++) { testLogger.LogComment("Turning Radio Off"); FastToggles++; wlanApi.SetRadioState(wlanInterface, 0, false); Wlan.Sleep(Random.Next(100, 750)); testLogger.LogComment("Turning Radio On"); wlanApi.SetRadioState(wlanInterface, 0, true); Wlan.Sleep(Random.Next(100, 750)); } testLogger.LogComment("Sleeping for a few seconds to allow the driver to calm down"); Wlan.Sleep(10000); } ScanAttempts++; testLogger.LogComment("Scanning"); wlanApi.TryScan(wlanInterface.Id, true, WlanStress.ScanWait); var list = wlanApi.GetAvailableNetworkList(wlanInterface.Id); if (list.Count > 0) { ScanSuccess++; } else { testLogger.LogComment("Scanning failed"); } } } finally { radioStateList = wlanApi.GetRadioState(wlanInterface); if (radioStateList[0].SoftwareRadioState == RadioState.Off) { testLogger.LogComment("Turning Radio On"); WlanNotificationWaiter waiterOnCleanup = wlanApi.CreateEventWaiter(WLAN_NOTIFICATION_MSM.wlan_notification_msm_radio_state_change); wlanApi.SetRadioState(wlanInterface, 0, true); waiterOnCleanup.Wait(waiterTimeout); } } } }