WakeupControllerTest.java revision 115c8923f9cfee8052c03eb5c92359d4156a86b2
1a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach/* 2a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Copyright 2017 The Android Open Source Project 3a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * 4a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Licensed under the Apache License, Version 2.0 (the "License"); 5a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * you may not use this file except in compliance with the License. 6a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * You may obtain a copy of the License at 7a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * 8a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * http://www.apache.org/licenses/LICENSE-2.0 9a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * 10a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Unless required by applicable law or agreed to in writing, software 11a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * distributed under the License is distributed on an "AS IS" BASIS, 12a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * See the License for the specific language governing permissions and 14a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * limitations under the License. 15a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach */ 16a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 17a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachpackage com.android.server.wifi; 18a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 19a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport static org.junit.Assert.assertFalse; 20a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport static org.junit.Assert.assertTrue; 21a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbachimport static org.mockito.ArgumentMatchers.any; 22115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport static org.mockito.ArgumentMatchers.eq; 23115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport static org.mockito.Mockito.never; 24a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbachimport static org.mockito.Mockito.verify; 25a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport static org.mockito.Mockito.when; 26a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 27a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport android.content.Context; 28115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport android.net.wifi.ScanResult; 29115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport android.net.wifi.WifiConfiguration; 30115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport android.net.wifi.WifiScanner; 31a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport android.os.test.TestLooper; 32a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport android.provider.Settings; 33a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 34115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport com.android.server.wifi.util.ScanResultUtil; 35115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 36a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport org.junit.Before; 37a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport org.junit.Test; 38115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport org.mockito.InOrder; 39a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport org.mockito.Mock; 40115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport org.mockito.Mockito; 41a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachimport org.mockito.MockitoAnnotations; 42a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 4304263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbachimport java.io.ByteArrayOutputStream; 4404263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbachimport java.io.PrintWriter; 45115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport java.util.Arrays; 46115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport java.util.Collection; 47115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbachimport java.util.Collections; 4804263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach 49a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach/** 50a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Unit tests for {@link WakeupController}. 51a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach */ 52a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbachpublic class WakeupControllerTest { 53a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 54a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach @Mock private Context mContext; 55a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach @Mock private WakeupLock mWakeupLock; 56a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach @Mock private WifiConfigStore mWifiConfigStore; 57115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Mock private WifiInjector mWifiInjector; 58115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Mock private WifiScanner mWifiScanner; 59115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Mock private WifiConfigManager mWifiConfigManager; 60a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach @Mock private FrameworkFacade mFrameworkFacade; 61a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 62a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach private TestLooper mLooper; 63a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach private WakeupController mWakeupController; 64a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 65a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach /** Initialize objects before each test run. */ 66a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach @Before 67a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach public void setUp() { 68a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach MockitoAnnotations.initMocks(this); 69115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 70115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach when(mWifiInjector.getWifiScanner()).thenReturn(mWifiScanner); 71a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach mLooper = new TestLooper(); 72a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach } 73a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 74115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** Initializes the wakeupcontroller in the given `enabled` state. */ 75115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach private void initializeWakeupController(boolean enabled) { 76115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach int settingsValue = enabled ? 1 : 0; 77115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach when(mFrameworkFacade.getIntegerSetting(mContext, 78115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach Settings.Global.WIFI_WAKEUP_ENABLED, 0)).thenReturn(settingsValue); 79115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController = new WakeupController(mContext, 80115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mLooper.getLooper(), 81115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupLock, 82115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWifiConfigManager, 83115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWifiConfigStore, 84115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWifiInjector, 85115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mFrameworkFacade); 86115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 87115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 88115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach private ScanResult createOpenScanResult(String ssid) { 89115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach ScanResult scanResult = new ScanResult(); 90115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach scanResult.SSID = ssid; 91115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach scanResult.capabilities = ""; 92115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach return scanResult; 93a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach } 94a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach 95a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach /** 96a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Verify WakeupController is enabled when the settings toggle is true. 97a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach */ 98a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach @Test 99a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach public void verifyEnabledWhenToggledOn() { 100115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 101a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 102a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach assertTrue(mWakeupController.isEnabled()); 103a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach } 104a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 105a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach /** 106a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach * Verify WakeupController is disabled when the settings toggle is false. 107a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach */ 108a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach @Test 109a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach public void verifyDisabledWhenToggledOff() { 110115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(false /* enabled */); 111a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach 112a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach assertFalse(mWakeupController.isEnabled()); 113a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach } 114a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach 115a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach /** 116a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach * Verify WakeupController registers its store data with the WifiConfigStore on construction. 117a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach */ 118a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach @Test 119a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach public void registersWakeupConfigStoreData() { 120115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 121a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach verify(mWifiConfigStore).registerStoreData(any(WakeupConfigStoreData.class)); 122a57806da53f2eadcf12475892ae3a0e0e58d98cdEric Schwarzenbach } 12304263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach 12404263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach /** 12504263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach * Verify that dump calls also dump the state of the WakeupLock. 12604263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach */ 12704263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach @Test 12804263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach public void dumpIncludesWakeupLock() { 129115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 13004263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach ByteArrayOutputStream stream = new ByteArrayOutputStream(); 13104263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach PrintWriter writer = new PrintWriter(stream); 13204263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach mWakeupController.dump(null, writer, null); 13304263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach 13404263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach verify(mWakeupLock).dump(null, writer, null); 13504263765dc4bb2a74722d69db56c5b42e7fb1bc9Eric Schwarzenbach } 136115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 137115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 138115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that start initializes the wakeup lock. 139115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 140115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 141115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void startInitializesWakeupLock() { 142115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 143115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 144115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach verify(mWakeupLock).initialize(any()); 145115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 146115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 147115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 148115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that start does not initialize the wakeup lock when feature is disabled. 149115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 150115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 151115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void startDoesNotInitializeWakeupLockWhenDisabled() { 152115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(false /* enabled */); 153115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 154115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach verify(mWakeupLock, never()).initialize(any()); 155115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 156115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 157115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 158115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that start does not re-initialize the wakeup lock if the controller is already active. 159115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 160115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 161115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void startDoesNotInitializeWakeupLockIfAlreadyActive() { 162115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 163115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach InOrder inOrder = Mockito.inOrder(mWakeupLock); 164115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 165115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 166115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach inOrder.verify(mWakeupLock).initialize(any()); 167115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 168115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.stop(); 169115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 170115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach inOrder.verify(mWakeupLock, never()).initialize(any()); 171115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 172115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 173115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 174115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that start registers the scan listener on the wifi scanner. 175115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 176115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 177115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void startRegistersScanListener() { 178115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 179115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 180115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach verify(mWifiScanner).registerScanListener(any()); 181115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 182115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 183115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 184115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that stop deregisters the scan listener from the wifi scanner. 185115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 186115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 187115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void stopDeresgistersScanListener() { 188115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 189115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 190115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.stop(); 191115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach verify(mWifiScanner).deregisterScanListener(any()); 192115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 193115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 194115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 195115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that reset sets active to false. 196115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * 197115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * <p>This is accomplished by initiating another call to start and verifying that the wakeup 198115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * lock is re-initialized. 199115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 200115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 201115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void resetSetsActiveToFalse() { 202115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 203115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach InOrder inOrder = Mockito.inOrder(mWakeupLock); 204115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 205115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 206115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach inOrder.verify(mWakeupLock).initialize(any()); 207115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 208115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.stop(); 209115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.reset(); 210115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 211115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach inOrder.verify(mWakeupLock).initialize(any()); 212115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 213115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 214115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach /** 215115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * Verify that the wakeup lock is initialized with the intersection of ScanResults and saved 216115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach * networks. 217115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach */ 218115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach @Test 219115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach public void startInitializesWakeupLockWithSavedScanResults() { 220115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach String ssid1 = "ssid 1"; 221115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach String ssid2 = "ssid 2"; 222115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach String quotedSsid = ScanResultUtil.createQuotedSSID(ssid1); 223115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 224115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach // saved configs 225115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork(quotedSsid); 226115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach openNetwork.getNetworkSelectionStatus().setHasEverConnected(true); 227115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach WifiConfiguration wepNetwork = WifiConfigurationTestUtil.createWepNetwork(); 228115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach wepNetwork.getNetworkSelectionStatus().setHasEverConnected(true); 229115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach when(mWifiConfigManager.getSavedNetworks()) 230115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach .thenReturn(Arrays.asList(openNetwork, wepNetwork)); 231115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 232115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach // scan results from most recent scan 233115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach ScanResult savedScanResult = createOpenScanResult(ssid1); 234115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach ScanResult unsavedScanResult = createOpenScanResult(ssid2); 235115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach when(mWifiScanner.getSingleScanResults()) 236115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach .thenReturn(Arrays.asList(savedScanResult, unsavedScanResult)); 237115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 238115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach // intersection of most recent scan + saved configs 239115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach Collection<ScanResultMatchInfo> expectedMatchInfos = 240115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach Collections.singleton(ScanResultMatchInfo.fromScanResult(savedScanResult)); 241115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach 242115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach initializeWakeupController(true /* enabled */); 243115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach mWakeupController.start(); 244115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach verify(mWakeupLock).initialize(eq(expectedMatchInfos)); 245115c8923f9cfee8052c03eb5c92359d4156a86b2Eric Schwarzenbach } 246a55e8d795bba5aa66f692cffa8fa28e3b4174546Eric Schwarzenbach} 247