From f1537c2ba42ca2a073e3eb9bca8502485bd38655 Mon Sep 17 00:00:00 2001 From: Iliyan Malchev Date: Mon, 20 Aug 2012 13:21:49 -0700 Subject: [PATCH] Revert "Revert "CTS for timestamp in ScanResult"" With b/6979211 fixed, we can reinstate timestamps. This reverts commit 72010dbfcf461bdcd116d22acbfec362b6583215 Change-Id: I1066567c728b233ad1d6c6af912c32ef099580e6 --- .../android/net/wifi/cts/ScanResultTest.java | 74 +++++++++++++++++-- 1 file changed, 66 insertions(+), 8 deletions(-) diff --git a/tests/cts/net/src/android/net/wifi/cts/ScanResultTest.java b/tests/cts/net/src/android/net/wifi/cts/ScanResultTest.java index 26cfff83fd..c9b82eecc7 100644 --- a/tests/cts/net/src/android/net/wifi/cts/ScanResultTest.java +++ b/tests/cts/net/src/android/net/wifi/cts/ScanResultTest.java @@ -26,6 +26,7 @@ import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.WifiLock; import android.test.AndroidTestCase; +import android.util.Log; public class ScanResultTest extends AndroidTestCase { private static class MySync { @@ -39,11 +40,14 @@ public class ScanResultTest extends AndroidTestCase { private static final int STATE_NULL = 0; private static final int STATE_WIFI_CHANGING = 1; private static final int STATE_WIFI_CHANGED = 2; + private static final int STATE_START_SCAN = 3; + private static final int STATE_SCAN_RESULTS_AVAILABLE = 4; private static final String TAG = "WifiInfoTest"; private static final int TIMEOUT_MSEC = 6000; private static final int WAIT_MSEC = 60; - private static final int DURATION = 10000; + private static final int ENABLE_WAIT_MSEC = 10000; + private static final int SCAN_WAIT_MSEC = 10000; private IntentFilter mIntentFilter; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -54,6 +58,11 @@ public class ScanResultTest extends AndroidTestCase { mMySync.expectedState = STATE_WIFI_CHANGED; mMySync.notify(); } + } else if (action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { + synchronized (mMySync) { + mMySync.expectedState = STATE_SCAN_RESULTS_AVAILABLE; + mMySync.notify(); + } } } }; @@ -83,7 +92,7 @@ public class ScanResultTest extends AndroidTestCase { mWifiLock.acquire(); if (!mWifiManager.isWifiEnabled()) setWifiEnabled(true); - Thread.sleep(DURATION); + Thread.sleep(ENABLE_WAIT_MSEC); assertTrue(mWifiManager.isWifiEnabled()); mMySync.expectedState = STATE_NULL; } @@ -99,7 +108,7 @@ public class ScanResultTest extends AndroidTestCase { mContext.unregisterReceiver(mReceiver); if (!mWifiManager.isWifiEnabled()) setWifiEnabled(true); - Thread.sleep(DURATION); + Thread.sleep(ENABLE_WAIT_MSEC); super.tearDown(); } @@ -107,11 +116,15 @@ public class ScanResultTest extends AndroidTestCase { synchronized (mMySync) { mMySync.expectedState = STATE_WIFI_CHANGING; assertTrue(mWifiManager.setWifiEnabled(enable)); - long timeout = System.currentTimeMillis() + TIMEOUT_MSEC; - while (System.currentTimeMillis() < timeout - && mMySync.expectedState == STATE_WIFI_CHANGING) - mMySync.wait(WAIT_MSEC); - } + waitForBroadcast(TIMEOUT_MSEC, STATE_WIFI_CHANGED); + } + } + + private void waitForBroadcast(long timeout, int expectedState) throws Exception { + long waitTime = System.currentTimeMillis() + timeout; + while (System.currentTimeMillis() < waitTime + && mMySync.expectedState != expectedState) + mMySync.wait(WAIT_MSEC); } public void testScanResultProperties() { @@ -127,4 +140,49 @@ public class ScanResultTest extends AndroidTestCase { } } + private void scanAndWait() throws Exception { + synchronized (mMySync) { + mMySync.expectedState = STATE_START_SCAN; + mWifiManager.startScan(); + waitForBroadcast(SCAN_WAIT_MSEC, STATE_SCAN_RESULTS_AVAILABLE); + } + } + + public void testScanResultTimeStamp() throws Exception { + if (!WifiFeature.isWifiSupported(getContext())) { + // skip the test if WiFi is not supported + return; + } + + long timestamp = 0; + String BSSID = null; + + /* Multiple scans to ensure bssid is updated */ + scanAndWait(); + scanAndWait(); + scanAndWait(); + + List scanResults = mWifiManager.getScanResults(); + for (ScanResult result : scanResults) { + BSSID = result.BSSID; + timestamp = result.timestamp; + assertTrue(timestamp != 0); + break; + } + + scanAndWait(); + scanAndWait(); + scanAndWait(); + + scanResults = mWifiManager.getScanResults(); + for (ScanResult result : scanResults) { + if (result.BSSID.equals(BSSID)) { + long timeDiff = (result.timestamp - timestamp) / 1000; + assertTrue (timeDiff > 0); + assertTrue (timeDiff < 6 * SCAN_WAIT_MSEC); + } + } + + } + }