Home | History | Annotate | Download | only in targetprep
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.tradefed.targetprep;
     18 
     19 import com.android.ddmlib.IDevice;
     20 import com.android.tradefed.build.DeviceBuildInfo;
     21 import com.android.tradefed.build.IBuildInfo;
     22 import com.android.tradefed.build.IDeviceBuildInfo;
     23 import com.android.tradefed.config.ConfigurationException;
     24 import com.android.tradefed.config.OptionSetter;
     25 import com.android.tradefed.device.DeviceNotAvailableException;
     26 import com.android.tradefed.device.ITestDevice;
     27 import com.android.tradefed.device.TcpDevice;
     28 import com.android.tradefed.device.TestDeviceOptions;
     29 import com.android.tradefed.util.BinaryState;
     30 import com.android.tradefed.util.FileUtil;
     31 
     32 import junit.framework.TestCase;
     33 
     34 import org.easymock.Capture;
     35 import org.easymock.EasyMock;
     36 
     37 import java.io.File;
     38 
     39 /**
     40  * Unit tests for {@link DeviceSetup}.
     41  */
     42 public class DeviceSetupTest extends TestCase {
     43 
     44     private DeviceSetup mDeviceSetup;
     45     private ITestDevice mMockDevice;
     46     private IDevice mMockIDevice;
     47     private IDeviceBuildInfo mMockBuildInfo;
     48     private File mTmpDir;
     49 
     50     private static final int DEFAULT_API_LEVEL = 23;
     51 
     52     /**
     53      * {@inheritDoc}
     54      */
     55     @Override
     56     protected void setUp() throws Exception {
     57         super.setUp();
     58         mMockDevice = EasyMock.createMock(ITestDevice.class);
     59         mMockIDevice = EasyMock.createMock(IDevice.class);
     60         EasyMock.expect(mMockDevice.getSerialNumber()).andReturn("foo").anyTimes();
     61         EasyMock.expect(mMockDevice.getDeviceDescriptor()).andStubReturn(null);
     62         EasyMock.expect(mMockDevice.getIDevice()).andStubReturn(mMockIDevice);
     63         mMockBuildInfo = new DeviceBuildInfo("0", "");
     64         mDeviceSetup = new DeviceSetup();
     65         mTmpDir = FileUtil.createTempDir("tmp");
     66     }
     67 
     68     /**
     69      * {@inheritDoc}
     70      */
     71     @Override
     72     protected void tearDown() throws Exception {
     73         FileUtil.recursiveDelete(mTmpDir);
     74         super.tearDown();
     75     }
     76 
     77     /**
     78      * Simple normal case test for {@link DeviceSetup#setUp(ITestDevice, IBuildInfo)}.
     79      */
     80     public void testSetup() throws Exception {
     81         Capture<String> setPropCapture = new Capture<>();
     82         doSetupExpectations(true, setPropCapture);
     83         doCheckExternalStoreSpaceExpectations();
     84         EasyMock.replay(mMockDevice);
     85 
     86         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
     87 
     88         EasyMock.verify(mMockDevice);
     89 
     90         String setProp = setPropCapture.getValue();
     91         assertTrue("Set prop doesn't contain ro.telephony.disable-call=true",
     92                 setProp.contains("ro.telephony.disable-call=true\n"));
     93         assertTrue("Set prop doesn't contain ro.audio.silent=1",
     94                 setProp.contains("ro.audio.silent=1\n"));
     95         assertTrue("Set prop doesn't contain ro.test_harness=1",
     96                 setProp.contains("ro.test_harness=1\n"));
     97         assertTrue("Set prop doesn't contain ro.monkey=1",
     98                 setProp.contains("ro.monkey=1\n"));
     99     }
    100 
    101     public void testSetup_airplane_mode_on() throws Exception {
    102         doSetupExpectations();
    103         doCheckExternalStoreSpaceExpectations();
    104         doSettingExpectations("global", "airplane_mode_on", "1");
    105         doCommandsExpectations(
    106                 "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true");
    107         EasyMock.replay(mMockDevice);
    108 
    109         mDeviceSetup.setAirplaneMode(BinaryState.ON);
    110         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    111 
    112         EasyMock.verify(mMockDevice);
    113     }
    114 
    115     public void testSetup_airplane_mode_off() throws Exception {
    116         doSetupExpectations();
    117         doCheckExternalStoreSpaceExpectations();
    118         doSettingExpectations("global", "airplane_mode_on", "0");
    119         doCommandsExpectations(
    120                 "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false");
    121         EasyMock.replay(mMockDevice);
    122 
    123         mDeviceSetup.setAirplaneMode(BinaryState.OFF);
    124         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    125 
    126         EasyMock.verify(mMockDevice);
    127     }
    128 
    129     public void testSetup_data_on() throws Exception {
    130         doSetupExpectations();
    131         doCheckExternalStoreSpaceExpectations();
    132         doSettingExpectations("global", "mobile_data", "1");
    133         doCommandsExpectations("svc data enable");
    134         EasyMock.replay(mMockDevice);
    135 
    136         mDeviceSetup.setData(BinaryState.ON);
    137         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    138 
    139         EasyMock.verify(mMockDevice);
    140     }
    141 
    142     public void testSetup_data_off() throws Exception {
    143         doSetupExpectations();
    144         doCheckExternalStoreSpaceExpectations();
    145         doSettingExpectations("global", "mobile_data", "0");
    146         doCommandsExpectations("svc data disable");
    147         EasyMock.replay(mMockDevice);
    148 
    149         mDeviceSetup.setData(BinaryState.OFF);
    150         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    151 
    152         EasyMock.verify(mMockDevice);
    153     }
    154 
    155     public void testSetup_cell_on() throws Exception {
    156         doSetupExpectations();
    157         doCheckExternalStoreSpaceExpectations();
    158         doSettingExpectations("global", "cell_on", "1");
    159         EasyMock.replay(mMockDevice);
    160 
    161         mDeviceSetup.setCell(BinaryState.ON);
    162         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    163 
    164         EasyMock.verify(mMockDevice);
    165     }
    166 
    167     public void testSetup_cell_off() throws Exception {
    168         doSetupExpectations();
    169         doCheckExternalStoreSpaceExpectations();
    170         doSettingExpectations("global", "cell_on", "0");
    171         EasyMock.replay(mMockDevice);
    172 
    173         mDeviceSetup.setCell(BinaryState.OFF);
    174         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    175 
    176         EasyMock.verify(mMockDevice);
    177     }
    178 
    179     public void testSetup_cell_auto_setting_on() throws Exception {
    180         doSetupExpectations();
    181         doCheckExternalStoreSpaceExpectations();
    182         doSettingExpectations("global", "clockwork_cell_auto_setting", "1");
    183         EasyMock.replay(mMockDevice);
    184 
    185         mDeviceSetup.setCellAutoSetting(BinaryState.ON);
    186         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    187 
    188         EasyMock.verify(mMockDevice);
    189     }
    190 
    191     public void testSetup_cell_auto_setting_off() throws Exception {
    192         doSetupExpectations();
    193         doCheckExternalStoreSpaceExpectations();
    194         doSettingExpectations("global", "clockwork_cell_auto_setting", "0");
    195         EasyMock.replay(mMockDevice);
    196 
    197         mDeviceSetup.setCellAutoSetting(BinaryState.OFF);
    198         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    199 
    200         EasyMock.verify(mMockDevice);
    201     }
    202 
    203     public void testSetup_wifi_on() throws Exception {
    204         doSetupExpectations();
    205         doCheckExternalStoreSpaceExpectations();
    206         doSettingExpectations("global", "wifi_on", "1");
    207         doCommandsExpectations("svc wifi enable");
    208         EasyMock.replay(mMockDevice);
    209 
    210         mDeviceSetup.setWifi(BinaryState.ON);
    211         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    212 
    213         EasyMock.verify(mMockDevice);
    214     }
    215 
    216     public void testSetup_wifi_off() throws Exception {
    217         doSetupExpectations();
    218         doCheckExternalStoreSpaceExpectations();
    219         doSettingExpectations("global", "wifi_on", "0");
    220         doCommandsExpectations("svc wifi disable");
    221         EasyMock.replay(mMockDevice);
    222 
    223         mDeviceSetup.setWifi(BinaryState.OFF);
    224         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    225 
    226         EasyMock.verify(mMockDevice);
    227     }
    228 
    229     public void testSetup_wifi_watchdog_on() throws Exception {
    230         doSetupExpectations();
    231         doCheckExternalStoreSpaceExpectations();
    232         doSettingExpectations("global", "wifi_watchdog", "1");
    233         EasyMock.replay(mMockDevice);
    234 
    235         mDeviceSetup.setWifiWatchdog(BinaryState.ON);
    236         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    237 
    238         EasyMock.verify(mMockDevice);
    239     }
    240 
    241     public void testSetup_wifi_watchdog_off() throws Exception {
    242         doSetupExpectations();
    243         doCheckExternalStoreSpaceExpectations();
    244         doSettingExpectations("global", "wifi_watchdog", "0");
    245         EasyMock.replay(mMockDevice);
    246 
    247         mDeviceSetup.setWifiWatchdog(BinaryState.OFF);
    248         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    249 
    250         EasyMock.verify(mMockDevice);
    251     }
    252 
    253     public void testSetup_disable_cw_wifi_mediator_on() throws Exception {
    254         doSetupExpectations();
    255         doCheckExternalStoreSpaceExpectations();
    256         doSettingExpectations("global", "cw_disable_wifimediator", "1");
    257         EasyMock.replay(mMockDevice);
    258 
    259         mDeviceSetup.setDisableCwWifiMediator(BinaryState.ON);
    260         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    261 
    262         EasyMock.verify(mMockDevice);
    263     }
    264 
    265     public void testSetup_disable_cw_wifi_mediator_off() throws Exception {
    266         doSetupExpectations();
    267         doCheckExternalStoreSpaceExpectations();
    268         doSettingExpectations("global", "cw_disable_wifimediator", "0");
    269         EasyMock.replay(mMockDevice);
    270 
    271         mDeviceSetup.setDisableCwWifiMediator(BinaryState.OFF);
    272         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    273 
    274         EasyMock.verify(mMockDevice);
    275     }
    276 
    277     public void testSetup_wifi_scan_on() throws Exception {
    278         doSetupExpectations();
    279         doCheckExternalStoreSpaceExpectations();
    280         doSettingExpectations("global", "wifi_scan_always_enabled", "1");
    281         EasyMock.replay(mMockDevice);
    282 
    283         mDeviceSetup.setWifiScanAlwaysEnabled(BinaryState.ON);
    284         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    285 
    286         EasyMock.verify(mMockDevice);
    287     }
    288 
    289     public void testSetup_wifi_scan_off() throws Exception {
    290         doSetupExpectations();
    291         doCheckExternalStoreSpaceExpectations();
    292         doSettingExpectations("global", "wifi_scan_always_enabled", "0");
    293         EasyMock.replay(mMockDevice);
    294 
    295         mDeviceSetup.setWifiScanAlwaysEnabled(BinaryState.OFF);
    296         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    297 
    298         EasyMock.verify(mMockDevice);
    299     }
    300 
    301     public void testSetup_ethernet_on() throws Exception {
    302         doSetupExpectations();
    303         doCheckExternalStoreSpaceExpectations();
    304         doCommandsExpectations("ifconfig eth0 up");
    305         EasyMock.replay(mMockDevice);
    306 
    307         mDeviceSetup.setEthernet(BinaryState.ON);
    308         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    309 
    310         EasyMock.verify(mMockDevice);
    311     }
    312 
    313     public void testSetup_ethernet_off() throws Exception {
    314         doSetupExpectations();
    315         doCheckExternalStoreSpaceExpectations();
    316         doCommandsExpectations("ifconfig eth0 down");
    317         EasyMock.replay(mMockDevice);
    318 
    319         mDeviceSetup.setEthernet(BinaryState.OFF);
    320         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    321 
    322         EasyMock.verify(mMockDevice);
    323     }
    324 
    325     public void testSetup_bluetooth_on() throws Exception {
    326         doSetupExpectations();
    327         doCheckExternalStoreSpaceExpectations();
    328         doCommandsExpectations("service call bluetooth_manager 6");
    329         EasyMock.replay(mMockDevice);
    330 
    331         mDeviceSetup.setBluetooth(BinaryState.ON);
    332         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    333 
    334         EasyMock.verify(mMockDevice);
    335     }
    336 
    337     public void testSetup_bluetooth_off() throws Exception {
    338         doSetupExpectations();
    339         doCheckExternalStoreSpaceExpectations();
    340         doCommandsExpectations("service call bluetooth_manager 8");
    341         EasyMock.replay(mMockDevice);
    342 
    343         mDeviceSetup.setBluetooth(BinaryState.OFF);
    344         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    345 
    346         EasyMock.verify(mMockDevice);
    347     }
    348 
    349     public void testSetup_nfc_on() throws Exception {
    350         doSetupExpectations();
    351         doCheckExternalStoreSpaceExpectations();
    352         doCommandsExpectations("svc nfc enable");
    353         EasyMock.replay(mMockDevice);
    354 
    355         mDeviceSetup.setNfc(BinaryState.ON);
    356         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    357 
    358         EasyMock.verify(mMockDevice);
    359     }
    360 
    361     public void testSetup_nfc_off() throws Exception {
    362         doSetupExpectations();
    363         doCheckExternalStoreSpaceExpectations();
    364         doCommandsExpectations("svc nfc disable");
    365         EasyMock.replay(mMockDevice);
    366 
    367         mDeviceSetup.setNfc(BinaryState.OFF);
    368         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    369 
    370         EasyMock.verify(mMockDevice);
    371     }
    372 
    373     public void testSetup_screen_adaptive_on() throws Exception {
    374         doSetupExpectations();
    375         doCheckExternalStoreSpaceExpectations();
    376         doSettingExpectations("system", "screen_brightness_mode", "1");
    377         EasyMock.replay(mMockDevice);
    378 
    379         mDeviceSetup.setScreenAdaptiveBrightness(BinaryState.ON);
    380         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    381 
    382         EasyMock.verify(mMockDevice);
    383     }
    384 
    385     public void testSetup_screen_adaptive_off() throws Exception {
    386         doSetupExpectations();
    387         doCheckExternalStoreSpaceExpectations();
    388         doSettingExpectations("system", "screen_brightness_mode", "0");
    389         EasyMock.replay(mMockDevice);
    390 
    391         mDeviceSetup.setScreenAdaptiveBrightness(BinaryState.OFF);
    392         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    393 
    394         EasyMock.verify(mMockDevice);
    395     }
    396 
    397     public void testSetup_screen_brightness() throws Exception {
    398         doSetupExpectations();
    399         doCheckExternalStoreSpaceExpectations();
    400         doSettingExpectations("system", "screen_brightness", "50");
    401         EasyMock.replay(mMockDevice);
    402 
    403         mDeviceSetup.setScreenBrightness(50);
    404         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    405 
    406         EasyMock.verify(mMockDevice);
    407     }
    408 
    409     public void testSetup_screen_stayon_default() throws Exception {
    410         doSetupExpectations(false /* Expect no screen on command */, new Capture<String>());
    411         doCheckExternalStoreSpaceExpectations();
    412         EasyMock.replay(mMockDevice);
    413 
    414         mDeviceSetup.setScreenAlwaysOn(BinaryState.IGNORE);
    415         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    416 
    417         EasyMock.verify(mMockDevice);
    418     }
    419 
    420     public void testSetup_screen_stayon_off() throws Exception {
    421         doSetupExpectations(false /* Expect no screen on command */, new Capture<String>());
    422         doCheckExternalStoreSpaceExpectations();
    423         doCommandsExpectations("svc power stayon false");
    424         EasyMock.replay(mMockDevice);
    425 
    426         mDeviceSetup.setScreenAlwaysOn(BinaryState.OFF);
    427         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    428 
    429         EasyMock.verify(mMockDevice);
    430     }
    431 
    432     public void testSetup_screen_timeout() throws Exception {
    433         doSetupExpectations(false /* Expect no screen on command */, new Capture<String>());
    434         doCheckExternalStoreSpaceExpectations();
    435         doSettingExpectations("system", "screen_off_timeout", "5000");
    436         EasyMock.replay(mMockDevice);
    437 
    438         mDeviceSetup.setScreenAlwaysOn(BinaryState.IGNORE);
    439         mDeviceSetup.setScreenTimeoutSecs(5l);
    440         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    441 
    442         EasyMock.verify(mMockDevice);
    443     }
    444 
    445     public void testSetup_screen_ambient_on() throws Exception {
    446         doSetupExpectations();
    447         doCheckExternalStoreSpaceExpectations();
    448         doSettingExpectations("secure", "doze_enabled", "1");
    449         EasyMock.replay(mMockDevice);
    450 
    451         mDeviceSetup.setScreenAmbientMode(BinaryState.ON);
    452         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    453 
    454         EasyMock.verify(mMockDevice);
    455     }
    456 
    457     public void testSetup_screen_ambient_off() throws Exception {
    458         doSetupExpectations();
    459         doCheckExternalStoreSpaceExpectations();
    460         doSettingExpectations("secure", "doze_enabled", "0");
    461         EasyMock.replay(mMockDevice);
    462 
    463         mDeviceSetup.setScreenAmbientMode(BinaryState.OFF);
    464         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    465 
    466         EasyMock.verify(mMockDevice);
    467     }
    468 
    469     public void testSetup_wake_gesture_on() throws Exception {
    470         doSetupExpectations();
    471         doCheckExternalStoreSpaceExpectations();
    472         doSettingExpectations("secure", "wake_gesture_enabled", "1");
    473         EasyMock.replay(mMockDevice);
    474 
    475         mDeviceSetup.setWakeGesture(BinaryState.ON);
    476         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    477 
    478         EasyMock.verify(mMockDevice);
    479     }
    480 
    481     public void testSetup_wake_gesture_off() throws Exception {
    482         doSetupExpectations();
    483         doCheckExternalStoreSpaceExpectations();
    484         doSettingExpectations("secure", "wake_gesture_enabled", "0");
    485         EasyMock.replay(mMockDevice);
    486 
    487         mDeviceSetup.setWakeGesture(BinaryState.OFF);
    488         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    489 
    490         EasyMock.verify(mMockDevice);
    491     }
    492 
    493     public void testSetup_screen_saver_on() throws Exception {
    494         doSetupExpectations();
    495         doCheckExternalStoreSpaceExpectations();
    496         doSettingExpectations("secure", "screensaver_enabled", "1");
    497         EasyMock.replay(mMockDevice);
    498 
    499         mDeviceSetup.setScreenSaver(BinaryState.ON);
    500         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    501 
    502         EasyMock.verify(mMockDevice);
    503     }
    504 
    505     public void testSetup_screen_saver_off() throws Exception {
    506         doSetupExpectations();
    507         doCheckExternalStoreSpaceExpectations();
    508         doSettingExpectations("secure", "screensaver_enabled", "0");
    509         EasyMock.replay(mMockDevice);
    510 
    511         mDeviceSetup.setScreenSaver(BinaryState.OFF);
    512         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    513 
    514         EasyMock.verify(mMockDevice);
    515     }
    516 
    517     public void testSetup_notification_led_on() throws Exception {
    518         doSetupExpectations();
    519         doCheckExternalStoreSpaceExpectations();
    520         doSettingExpectations("system", "notification_light_pulse", "1");
    521         EasyMock.replay(mMockDevice);
    522 
    523         mDeviceSetup.setNotificationLed(BinaryState.ON);
    524         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    525 
    526         EasyMock.verify(mMockDevice);
    527     }
    528 
    529     public void testSetup_notification_led_off() throws Exception {
    530         doSetupExpectations();
    531         doCheckExternalStoreSpaceExpectations();
    532         doSettingExpectations("system", "notification_light_pulse", "0");
    533         EasyMock.replay(mMockDevice);
    534 
    535         mDeviceSetup.setNotificationLed(BinaryState.OFF);
    536         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    537 
    538         EasyMock.verify(mMockDevice);
    539     }
    540 
    541     public void testInstallNonMarketApps_on() throws Exception {
    542         doSetupExpectations();
    543         doCheckExternalStoreSpaceExpectations();
    544         doSettingExpectations("secure", "install_non_market_apps", "1");
    545         EasyMock.replay(mMockDevice);
    546 
    547         mDeviceSetup.setInstallNonMarketApps(BinaryState.ON);
    548         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    549 
    550         EasyMock.verify(mMockDevice);
    551     }
    552 
    553     public void testInstallNonMarketApps_off() throws Exception {
    554         doSetupExpectations();
    555         doCheckExternalStoreSpaceExpectations();
    556         doSettingExpectations("secure", "install_non_market_apps", "0");
    557         EasyMock.replay(mMockDevice);
    558 
    559         mDeviceSetup.setInstallNonMarketApps(BinaryState.OFF);
    560         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    561 
    562         EasyMock.verify(mMockDevice);
    563     }
    564 
    565     public void testSetup_trigger_media_mounted() throws Exception {
    566         doSetupExpectations();
    567         doCheckExternalStoreSpaceExpectations();
    568         doCommandsExpectations(
    569                 "am broadcast -a android.intent.action.MEDIA_MOUNTED "
    570                         + "-d file://${EXTERNAL_STORAGE} --receiver-include-background");
    571         EasyMock.replay(mMockDevice);
    572 
    573         mDeviceSetup.setTriggerMediaMounted(true);
    574         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    575 
    576         EasyMock.verify(mMockDevice);
    577     }
    578 
    579     public void testSetup_location_gps_on() throws Exception {
    580         doSetupExpectations();
    581         doCheckExternalStoreSpaceExpectations();
    582         doSettingExpectations("secure", "location_providers_allowed", "+gps");
    583         EasyMock.replay(mMockDevice);
    584 
    585         mDeviceSetup.setLocationGps(BinaryState.ON);
    586         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    587 
    588         EasyMock.verify(mMockDevice);
    589     }
    590 
    591     public void testSetup_location_gps_off() throws Exception {
    592         doSetupExpectations();
    593         doCheckExternalStoreSpaceExpectations();
    594         doSettingExpectations("secure", "location_providers_allowed", "-gps");
    595         EasyMock.replay(mMockDevice);
    596 
    597         mDeviceSetup.setLocationGps(BinaryState.OFF);
    598         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    599 
    600         EasyMock.verify(mMockDevice);
    601     }
    602 
    603     public void testSetup_location_network_on() throws Exception {
    604         doSetupExpectations();
    605         doCheckExternalStoreSpaceExpectations();
    606         doSettingExpectations("secure", "location_providers_allowed", "+network");
    607         EasyMock.replay(mMockDevice);
    608 
    609         mDeviceSetup.setLocationNetwork(BinaryState.ON);
    610         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    611 
    612         EasyMock.verify(mMockDevice);
    613     }
    614 
    615     public void testSetup_location_network_off() throws Exception {
    616         doSetupExpectations();
    617         doCheckExternalStoreSpaceExpectations();
    618         doSettingExpectations("secure", "location_providers_allowed", "-network");
    619         EasyMock.replay(mMockDevice);
    620 
    621         mDeviceSetup.setLocationNetwork(BinaryState.OFF);
    622         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    623 
    624         EasyMock.verify(mMockDevice);
    625     }
    626 
    627     public void testSetup_rotate_on() throws Exception {
    628         doSetupExpectations();
    629         doCheckExternalStoreSpaceExpectations();
    630         doSettingExpectations("system", "accelerometer_rotation", "1");
    631         EasyMock.replay(mMockDevice);
    632 
    633         mDeviceSetup.setAutoRotate(BinaryState.ON);
    634         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    635 
    636         EasyMock.verify(mMockDevice);
    637     }
    638 
    639     public void testSetup_rotate_off() throws Exception {
    640         doSetupExpectations();
    641         doCheckExternalStoreSpaceExpectations();
    642         doSettingExpectations("system", "accelerometer_rotation", "0");
    643         EasyMock.replay(mMockDevice);
    644 
    645         mDeviceSetup.setAutoRotate(BinaryState.OFF);
    646         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    647 
    648         EasyMock.verify(mMockDevice);
    649     }
    650 
    651     public void testSetup_battery_saver_on() throws Exception {
    652         doSetupExpectations();
    653         doCheckExternalStoreSpaceExpectations();
    654         doSettingExpectations("global", "low_power", "1");
    655         doCommandsExpectations("dumpsys battery unplug");
    656         EasyMock.replay(mMockDevice);
    657 
    658         mDeviceSetup.setBatterySaver(BinaryState.ON);
    659         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    660 
    661         EasyMock.verify(mMockDevice);
    662     }
    663 
    664     public void testSetup_legacy_battery_saver_on() throws Exception {
    665         doSetupExpectations(21); // API level Lollipop
    666         doCheckExternalStoreSpaceExpectations();
    667         doSettingExpectations("global", "low_power", "1");
    668         doCommandsExpectations("dumpsys battery set usb 0");
    669         EasyMock.replay(mMockDevice);
    670 
    671         mDeviceSetup.setBatterySaver(BinaryState.ON);
    672         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    673 
    674         EasyMock.verify(mMockDevice);
    675     }
    676 
    677     public void testSetup_battery_saver_off() throws Exception {
    678         doSetupExpectations();
    679         doCheckExternalStoreSpaceExpectations();
    680         doSettingExpectations("global", "low_power", "0");
    681         EasyMock.replay(mMockDevice);
    682 
    683         mDeviceSetup.setBatterySaver(BinaryState.OFF);
    684         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    685 
    686         EasyMock.verify(mMockDevice);
    687     }
    688 
    689     public void testSetup_battery_saver_trigger() throws Exception {
    690         doSetupExpectations();
    691         doCheckExternalStoreSpaceExpectations();
    692         doSettingExpectations("global", "low_power_trigger_level", "50");
    693         EasyMock.replay(mMockDevice);
    694 
    695         mDeviceSetup.setBatterySaverTrigger(50);
    696         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    697 
    698         EasyMock.verify(mMockDevice);
    699     }
    700 
    701     public void testSetup_enable_full_battery_stats_history() throws Exception {
    702         doSetupExpectations();
    703         doCheckExternalStoreSpaceExpectations();
    704         doCommandsExpectations("dumpsys batterystats --enable full-history");
    705         EasyMock.replay(mMockDevice);
    706 
    707         mDeviceSetup.setEnableFullBatteryStatsHistory(true);
    708         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    709 
    710         EasyMock.verify(mMockDevice);
    711     }
    712 
    713     public void testSetup_disable_doze() throws Exception {
    714         doSetupExpectations();
    715         doCheckExternalStoreSpaceExpectations();
    716         doCommandsExpectations("dumpsys deviceidle disable");
    717         EasyMock.replay(mMockDevice);
    718 
    719         mDeviceSetup.setDisableDoze(true);
    720         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    721 
    722         EasyMock.verify(mMockDevice);
    723     }
    724 
    725     public void testSetup_update_time_on() throws Exception {
    726         doSetupExpectations();
    727         doCheckExternalStoreSpaceExpectations();
    728         doSettingExpectations("global", "auto_time", "1");
    729         EasyMock.replay(mMockDevice);
    730 
    731         mDeviceSetup.setAutoUpdateTime(BinaryState.ON);
    732         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    733 
    734         EasyMock.verify(mMockDevice);
    735     }
    736 
    737     public void testSetup_update_time_off() throws Exception {
    738         doSetupExpectations();
    739         doCheckExternalStoreSpaceExpectations();
    740         doSettingExpectations("global", "auto_time", "0");
    741         EasyMock.replay(mMockDevice);
    742 
    743         mDeviceSetup.setAutoUpdateTime(BinaryState.OFF);
    744         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    745 
    746         EasyMock.verify(mMockDevice);
    747     }
    748 
    749     public void testSetup_update_timezone_on() throws Exception {
    750         doSetupExpectations();
    751         doCheckExternalStoreSpaceExpectations();
    752         doSettingExpectations("global", "auto_timezone", "1");
    753         EasyMock.replay(mMockDevice);
    754 
    755         mDeviceSetup.setAutoUpdateTimezone(BinaryState.ON);
    756         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    757 
    758         EasyMock.verify(mMockDevice);
    759     }
    760 
    761     public void testSetup_update_timezone_off() throws Exception {
    762         doSetupExpectations();
    763         doCheckExternalStoreSpaceExpectations();
    764         doSettingExpectations("global", "auto_timezone", "0");
    765         EasyMock.replay(mMockDevice);
    766 
    767         mDeviceSetup.setAutoUpdateTimezone(BinaryState.OFF);
    768         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    769 
    770         EasyMock.verify(mMockDevice);
    771     }
    772 
    773     public void testSetup_set_timezone_LA() throws Exception {
    774         doSetupExpectations();
    775         doCheckExternalStoreSpaceExpectations();
    776         doCommandsExpectations("setprop \"persist.sys.timezone\" \"America/Los_Angeles\"");
    777         EasyMock.replay(mMockDevice);
    778 
    779         mDeviceSetup.setTimezone("America/Los_Angeles");
    780         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    781 
    782         EasyMock.verify(mMockDevice);
    783     }
    784 
    785     public void testSetup_no_disable_dialing() throws Exception {
    786         Capture<String> setPropCapture = new Capture<>();
    787         doSetupExpectations(true, setPropCapture);
    788         doCheckExternalStoreSpaceExpectations();
    789         EasyMock.replay(mMockDevice);
    790 
    791         mDeviceSetup.setDisableDialing(false);
    792         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    793 
    794         EasyMock.verify(mMockDevice);
    795 
    796         assertFalse("Set prop contains ro.telephony.disable-call=true",
    797                 setPropCapture.getValue().contains("ro.telephony.disable-call=true\n"));
    798     }
    799 
    800     public void testSetup_sim_data() throws Exception {
    801         doSetupExpectations();
    802         doCheckExternalStoreSpaceExpectations();
    803         doSettingExpectations("global", "multi_sim_data_call", "1");
    804         EasyMock.replay(mMockDevice);
    805 
    806         mDeviceSetup.setDefaultSimData(1);
    807         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    808 
    809         EasyMock.verify(mMockDevice);
    810     }
    811 
    812     public void testSetup_sim_voice() throws Exception {
    813         doSetupExpectations();
    814         doCheckExternalStoreSpaceExpectations();
    815         doSettingExpectations("global", "multi_sim_voice_call", "1");
    816         EasyMock.replay(mMockDevice);
    817 
    818         mDeviceSetup.setDefaultSimVoice(1);
    819         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    820 
    821         EasyMock.verify(mMockDevice);
    822     }
    823 
    824     public void testSetup_sim_sms() throws Exception {
    825         doSetupExpectations();
    826         doCheckExternalStoreSpaceExpectations();
    827         doSettingExpectations("global", "multi_sim_sms", "1");
    828         EasyMock.replay(mMockDevice);
    829 
    830         mDeviceSetup.setDefaultSimSms(1);
    831         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    832 
    833         EasyMock.verify(mMockDevice);
    834     }
    835 
    836     public void testSetup_no_disable_audio() throws Exception {
    837         Capture<String> setPropCapture = new Capture<>();
    838         doSetupExpectations(true, setPropCapture);
    839         doCheckExternalStoreSpaceExpectations();
    840         EasyMock.replay(mMockDevice);
    841 
    842         mDeviceSetup.setDisableAudio(false);
    843         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    844 
    845         EasyMock.verify(mMockDevice);
    846 
    847         assertFalse("Set prop contains ro.audio.silent=1",
    848                 setPropCapture.getValue().contains("ro.audio.silent=1\n"));
    849     }
    850 
    851     public void testSetup_no_test_harness() throws Exception {
    852         Capture<String> setPropCapture = new Capture<>();
    853         doSetupExpectations(true, setPropCapture);
    854         doCheckExternalStoreSpaceExpectations();
    855         EasyMock.replay(mMockDevice);
    856 
    857         mDeviceSetup.setTestHarness(false);
    858         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    859 
    860         EasyMock.verify(mMockDevice);
    861 
    862         String setProp = setPropCapture.getValue();
    863         assertFalse("Set prop contains ro.test_harness=1",
    864                 setProp.contains("ro.test_harness=1\n"));
    865         assertFalse("Set prop contains ro.monkey=1",
    866                 setProp.contains("ro.monkey=1\n"));
    867     }
    868 
    869     public void testSetup_disalbe_dalvik_verifier() throws Exception {
    870         Capture<String> setPropCapture = new Capture<>();
    871         doSetupExpectations(true, setPropCapture);
    872         doCheckExternalStoreSpaceExpectations();
    873         EasyMock.replay(mMockDevice);
    874 
    875         mDeviceSetup.setDisableDalvikVerifier(true);
    876         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    877 
    878         EasyMock.verify(mMockDevice);
    879 
    880         String setProp = setPropCapture.getValue();
    881         assertTrue("Set prop doesn't contain dalvik.vm.dexopt-flags=v=n",
    882                 setProp.contains("dalvik.vm.dexopt-flags=v=n\n"));
    883     }
    884 
    885     /**
    886      * Test {@link DeviceSetup#setUp(ITestDevice, IBuildInfo)} when free space check fails.
    887      */
    888     public void testSetup_freespace() throws Exception {
    889         doSetupExpectations();
    890         mDeviceSetup.setMinExternalStorageKb(500);
    891         EasyMock.expect(mMockDevice.getExternalStoreFreeSpace()).andReturn(1L);
    892         EasyMock.replay(mMockDevice);
    893         try {
    894             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    895             fail("DeviceNotAvailableException not thrown");
    896         } catch (DeviceNotAvailableException e) {
    897             // expected
    898         }
    899     }
    900 
    901     /**
    902      * Test {@link DeviceSetup#setUp(ITestDevice, IBuildInfo)} when local data path does not
    903      * exist.
    904      */
    905     public void testSetup_badLocalData() throws Exception {
    906         doSetupExpectations();
    907         mDeviceSetup.setLocalDataPath(new File("idontexist"));
    908         EasyMock.replay(mMockDevice);
    909         try {
    910             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    911             fail("TargetSetupError not thrown");
    912         } catch (TargetSetupError e) {
    913             // expected
    914         }
    915     }
    916 
    917     /**
    918      * Test normal case {@link DeviceSetup#setUp(ITestDevice, IBuildInfo)} when local data
    919      * is synced
    920      */
    921     public void testSetup_syncData() throws Exception {
    922         doSetupExpectations();
    923         doCheckExternalStoreSpaceExpectations();
    924         doSyncDataExpectations(true);
    925 
    926         EasyMock.replay(mMockDevice, mMockIDevice);
    927         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    928         EasyMock.verify(mMockDevice, mMockIDevice);
    929     }
    930 
    931     /**
    932      * Test case {@link DeviceSetup#setUp(ITestDevice, IBuildInfo)} when local data fails to be
    933      * synced.
    934      */
    935     public void testSetup_syncDataFails() throws Exception {
    936         doSetupExpectations();
    937         doSyncDataExpectations(false);
    938         EasyMock.replay(mMockDevice, mMockIDevice);
    939         try {
    940             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    941             fail("TargetSetupError not thrown");
    942         } catch (TargetSetupError e) {
    943             // expected
    944         }
    945     }
    946 
    947     @SuppressWarnings("deprecation")
    948     public void testSetup_legacy() throws Exception {
    949         Capture<String> setPropCapture = new Capture<>();
    950         doSetupExpectations(true, setPropCapture);
    951         doCheckExternalStoreSpaceExpectations();
    952         EasyMock.replay(mMockDevice);
    953 
    954         mDeviceSetup.setDeprecatedAudioSilent(false);
    955         mDeviceSetup.setDeprecatedMinExternalStoreSpace(1000);
    956         mDeviceSetup.setDeprecatedSetProp("key=value");
    957         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    958 
    959         EasyMock.verify(mMockDevice);
    960 
    961         String setProp = setPropCapture.getValue();
    962         assertTrue("Set prop doesn't contain ro.telephony.disable-call=true",
    963                 setProp.contains("ro.telephony.disable-call=true\n"));
    964         assertTrue("Set prop doesn't contain ro.test_harness=1",
    965                 setProp.contains("ro.test_harness=1\n"));
    966         assertTrue("Set prop doesn't contain ro.monkey=1",
    967                 setProp.contains("ro.monkey=1\n"));
    968         assertTrue("Set prop doesn't contain key=value",
    969                 setProp.contains("key=value\n"));
    970     }
    971 
    972     @SuppressWarnings("deprecation")
    973     public void testSetup_legacy_storage_conflict() throws Exception {
    974         doSetupExpectations();
    975         EasyMock.replay(mMockDevice);
    976 
    977         mDeviceSetup.setMinExternalStorageKb(1000);
    978         mDeviceSetup.setDeprecatedMinExternalStoreSpace(1000);
    979         try {
    980             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    981             fail("TargetSetupError expected");
    982         } catch (TargetSetupError e) {
    983             // Expected
    984         }
    985     }
    986 
    987     @SuppressWarnings("deprecation")
    988     public void testSetup_legacy_silent_conflict() throws Exception {
    989         doSetupExpectations();
    990         EasyMock.replay(mMockDevice);
    991 
    992         mDeviceSetup.setDisableAudio(false);
    993         mDeviceSetup.setDeprecatedAudioSilent(false);
    994         try {
    995             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
    996             fail("TargetSetupError expected");
    997         } catch (TargetSetupError e) {
    998             // Expected
    999         }
   1000     }
   1001 
   1002     @SuppressWarnings("deprecation")
   1003     public void testSetup_legacy_setprop_conflict() throws Exception {
   1004         doSetupExpectations();
   1005         EasyMock.replay(mMockDevice);
   1006 
   1007         mDeviceSetup.setProperty("key", "value");
   1008         mDeviceSetup.setDeprecatedSetProp("key=value");
   1009         try {
   1010             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1011             fail("TargetSetupError expected");
   1012         } catch (TargetSetupError e) {
   1013             // Expected
   1014         }
   1015     }
   1016 
   1017     public void test_restore_properties_previous_exists() throws Exception {
   1018         File f = new File("");
   1019         doSetupExpectations();
   1020         doCheckExternalStoreSpaceExpectations();
   1021         EasyMock.expect(mMockDevice.pullFile("/data/local.prop")).andReturn(f).once();
   1022         EasyMock.expect(mMockDevice.pushFile(f, "/data/local.prop")).andReturn(true).once();
   1023         mMockDevice.reboot();
   1024         EasyMock.expectLastCall().once();
   1025 
   1026         EasyMock.replay(mMockDevice);
   1027 
   1028         mDeviceSetup.setRestoreProperties(true);
   1029         mDeviceSetup.setProperty("key", "value");
   1030         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1031         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1032 
   1033         EasyMock.verify(mMockDevice);
   1034     }
   1035 
   1036     public void test_restore_properties_previous_doesnt_exists() throws Exception {
   1037         doSetupExpectations();
   1038         doCheckExternalStoreSpaceExpectations();
   1039         EasyMock.expect(mMockDevice.pullFile("/data/local.prop")).andReturn(null).once();
   1040         EasyMock.expect(mMockDevice.executeShellCommand("rm -f /data/local.prop"))
   1041                 .andReturn(null)
   1042                 .once();
   1043         mMockDevice.reboot();
   1044         EasyMock.expectLastCall().once();
   1045 
   1046         EasyMock.replay(mMockDevice);
   1047 
   1048         mDeviceSetup.setRestoreProperties(true);
   1049         mDeviceSetup.setProperty("key", "value");
   1050         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1051         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1052 
   1053         EasyMock.verify(mMockDevice);
   1054     }
   1055 
   1056     public void test_restore_settings() throws Exception {
   1057         doSetupExpectations();
   1058         doCheckExternalStoreSpaceExpectations();
   1059         EasyMock.expect(mMockDevice.getApiLevel()).andStubReturn(23);
   1060         EasyMock.expect(mMockDevice.getSetting("system", "key")).andReturn("orig").once();
   1061         mMockDevice.setSetting("system", "key", "value");
   1062         EasyMock.expectLastCall().once();
   1063         EasyMock.expect(mMockDevice.getSetting("global", "key2")).andReturn("orig2").once();
   1064         mMockDevice.setSetting("global", "key2", "value2");
   1065         EasyMock.expectLastCall().once();
   1066         EasyMock.expect(mMockDevice.getSetting("secure", "key3")).andReturn("orig3").once();
   1067         mMockDevice.setSetting("secure", "key3", "value3");
   1068         EasyMock.expectLastCall().once();
   1069         mMockDevice.setSetting("system", "key", "orig");
   1070         EasyMock.expectLastCall().once();
   1071         mMockDevice.setSetting("global", "key2", "orig2");
   1072         EasyMock.expectLastCall().once();
   1073         mMockDevice.setSetting("secure", "key3", "orig3");
   1074         EasyMock.expectLastCall().once();
   1075 
   1076         EasyMock.replay(mMockDevice);
   1077 
   1078         mDeviceSetup.setRestoreSettings(true);
   1079         mDeviceSetup.setSystemSetting("key", "value");
   1080         mDeviceSetup.setGlobalSetting("key2", "value2");
   1081         mDeviceSetup.setSecureSetting("key3", "value3");
   1082         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1083         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1084 
   1085         EasyMock.verify(mMockDevice);
   1086     }
   1087 
   1088     public void testTearDown() throws Exception {
   1089         EasyMock.replay(mMockDevice);
   1090         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1091         EasyMock.verify(mMockDevice);
   1092     }
   1093 
   1094     public void testTearDown_disconnectFromWifi() throws Exception {
   1095         EasyMock.expect(mMockDevice.isWifiEnabled()).andReturn(Boolean.TRUE);
   1096         EasyMock.expect(mMockDevice.disconnectFromWifi()).andReturn(Boolean.TRUE);
   1097         mDeviceSetup.setWifiNetwork("wifi_network");
   1098         EasyMock.replay(mMockDevice);
   1099         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1100         EasyMock.verify(mMockDevice);
   1101     }
   1102 
   1103     /** Test that tearDown is inop when using a stub device instance. */
   1104     public void testTearDown_tcpDevice() throws Exception {
   1105         EasyMock.expect(mMockDevice.getIDevice()).andReturn(new TcpDevice("tcp-device-0"));
   1106         EasyMock.replay(mMockDevice);
   1107         mDeviceSetup.tearDown(mMockDevice, mMockBuildInfo, null);
   1108         EasyMock.verify(mMockDevice);
   1109     }
   1110 
   1111     public void testSetup_rootDisabled() throws Exception {
   1112         doSetupExpectations(true /* screenOn */, false /* root enabled */,
   1113                 false /* root response */, DEFAULT_API_LEVEL, new Capture<>());
   1114         doCheckExternalStoreSpaceExpectations();
   1115         EasyMock.replay(mMockDevice);
   1116         mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1117         EasyMock.verify(mMockDevice);
   1118     }
   1119 
   1120     public void testSetup_rootFailed() throws Exception {
   1121         doSetupExpectations(true /* screenOn */, true /* root enabled */,
   1122                 false /* root response */, DEFAULT_API_LEVEL, new Capture<>());
   1123         EasyMock.replay(mMockDevice);
   1124         try {
   1125             mDeviceSetup.setUp(mMockDevice, mMockBuildInfo);
   1126             fail("TargetSetupError expected");
   1127         } catch (TargetSetupError e) {
   1128             // Expected
   1129         }
   1130     }
   1131 
   1132     /** Set EasyMock expectations for a normal setup call */
   1133     private void doSetupExpectations() throws DeviceNotAvailableException, ConfigurationException {
   1134         doSetupExpectations(true /* screen on */, true /* root enabled */, true /* root response */,
   1135                 DEFAULT_API_LEVEL, new Capture<String>());
   1136     }
   1137 
   1138     /** Set EasyMock expectations for a normal setup call */
   1139     private void doSetupExpectations(int apiLevel)
   1140             throws DeviceNotAvailableException, ConfigurationException {
   1141         doSetupExpectations(true /* screen on */, true /* root enabled */, true /* root response */,
   1142                 apiLevel, new Capture<String>());
   1143     }
   1144 
   1145     /** Set EasyMock expectations for a normal setup call */
   1146     private void doSetupExpectations(boolean screenOn, Capture<String> setPropCapture)
   1147             throws DeviceNotAvailableException, ConfigurationException {
   1148         doSetupExpectations(screenOn, true /* root enabled */, true /* root response */,
   1149                 DEFAULT_API_LEVEL, setPropCapture);
   1150     }
   1151 
   1152     /** Set EasyMock expectations for a normal setup call */
   1153     private void doSetupExpectations(
   1154             boolean screenOn,
   1155             boolean adbRootEnabled,
   1156             boolean adbRootResponse,
   1157             int apiLevel,
   1158             Capture<String> setPropCapture)
   1159             throws DeviceNotAvailableException, ConfigurationException {
   1160         TestDeviceOptions options = new TestDeviceOptions();
   1161         OptionSetter setter = new OptionSetter(options);
   1162         setter.setOptionValue("enable-root", Boolean.toString(adbRootEnabled));
   1163         EasyMock.expect(mMockDevice.getOptions()).andReturn(options).once();
   1164         if (adbRootEnabled) {
   1165             EasyMock.expect(mMockDevice.enableAdbRoot()).andReturn(adbRootResponse);
   1166         }
   1167         EasyMock.expect(mMockDevice.clearErrorDialogs()).andReturn(Boolean.TRUE);
   1168         EasyMock.expect(mMockDevice.getApiLevel()).andReturn(apiLevel);
   1169         // expect push of local.prop file to change system properties
   1170         EasyMock.expect(mMockDevice.pushString(EasyMock.capture(setPropCapture),
   1171                 EasyMock.contains("local.prop"))).andReturn(Boolean.TRUE);
   1172         EasyMock.expect(mMockDevice.executeShellCommand(
   1173                 EasyMock.matches("chmod 644 .*local.prop"))).andReturn("");
   1174         mMockDevice.reboot();
   1175         if (screenOn) {
   1176             EasyMock.expect(mMockDevice.executeShellCommand("svc power stayon true")).andReturn("");
   1177             EasyMock.expect(mMockDevice.executeShellCommand("input keyevent 82")).andReturn("");
   1178             EasyMock.expect(mMockDevice.executeShellCommand("input keyevent 3")).andReturn("");
   1179         }
   1180     }
   1181 
   1182     /**
   1183      * Perform common EasyMock expect operations for a setUp call which syncs local data
   1184      */
   1185     private void doSyncDataExpectations(boolean result) throws DeviceNotAvailableException {
   1186         mDeviceSetup.setLocalDataPath(mTmpDir);
   1187         EasyMock.expect(mMockDevice.getIDevice()).andReturn(mMockIDevice);
   1188         String mntPoint = "/sdcard";
   1189         EasyMock.expect(mMockIDevice.getMountPoint(IDevice.MNT_EXTERNAL_STORAGE)).andReturn(
   1190                 mntPoint);
   1191         EasyMock.expect(mMockDevice.syncFiles(mTmpDir, mntPoint)).andReturn(result);
   1192     }
   1193 
   1194     private void doCheckExternalStoreSpaceExpectations() throws DeviceNotAvailableException {
   1195         EasyMock.expect(mMockDevice.getExternalStoreFreeSpace()).andReturn(1000l);
   1196     }
   1197 
   1198     private void doCommandsExpectations(String... commands)
   1199             throws DeviceNotAvailableException {
   1200         for (String command : commands) {
   1201             EasyMock.expect(mMockDevice.executeShellCommand(command)).andReturn("");
   1202         }
   1203     }
   1204 
   1205     private void doSettingExpectations(String namespace, String key, String value)
   1206             throws DeviceNotAvailableException {
   1207         EasyMock.expect(mMockDevice.getApiLevel()).andReturn(22);
   1208         mMockDevice.setSetting(namespace, key, value);
   1209         EasyMock.expectLastCall();
   1210     }
   1211 }
   1212