1 /* 2 * Copyright (C) 2017 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 package com.android.tradefed.targetprep; 17 18 import com.android.tradefed.build.IBuildInfo; 19 import com.android.tradefed.config.OptionSetter; 20 import com.android.tradefed.device.DeviceNotAvailableException; 21 import com.android.tradefed.device.ITestDevice; 22 23 import org.easymock.EasyMock; 24 import org.junit.Before; 25 import org.junit.Test; 26 import org.junit.runner.RunWith; 27 import org.junit.runners.JUnit4; 28 29 /** Unit Tests for {@link RestartSystemServerTargetPreparer}. */ 30 @RunWith(JUnit4.class) 31 public class RestartSystemServerTargetPreparerTest { 32 33 private RestartSystemServerTargetPreparer mRestartSystemServerTargetPreparer; 34 private ITestDevice mMockDevice; 35 private IBuildInfo mMockBuildInfo; 36 37 @Before 38 public void setUp() { 39 mMockDevice = EasyMock.createMock(ITestDevice.class); 40 mMockBuildInfo = EasyMock.createMock(IBuildInfo.class); 41 mRestartSystemServerTargetPreparer = new RestartSystemServerTargetPreparer(); 42 } 43 44 @Test 45 public void testSetUp_bootComplete() throws Exception { 46 EasyMock.expect(mMockDevice.enableAdbRoot()).andReturn(true).once(); 47 EasyMock.expect(mMockDevice.executeShellCommand("setprop dev.bootcomplete 0")) 48 .andReturn(null); 49 EasyMock.expect( 50 mMockDevice.executeShellCommand( 51 RestartSystemServerTargetPreparer.KILL_SERVER_COMMAND)) 52 .andReturn(null) 53 .once(); 54 mMockDevice.waitForDeviceAvailable(); 55 EasyMock.expectLastCall().once(); 56 EasyMock.replay(mMockDevice, mMockBuildInfo); 57 58 mRestartSystemServerTargetPreparer.setUp(mMockDevice, mMockBuildInfo); 59 EasyMock.verify(mMockDevice, mMockBuildInfo); 60 } 61 62 @Test(expected = DeviceNotAvailableException.class) 63 public void testSetUp_bootNotComplete() throws Exception { 64 EasyMock.expect(mMockDevice.enableAdbRoot()).andReturn(true).once(); 65 EasyMock.expect(mMockDevice.executeShellCommand("setprop dev.bootcomplete 0")) 66 .andReturn(null); 67 EasyMock.expect( 68 mMockDevice.executeShellCommand( 69 RestartSystemServerTargetPreparer.KILL_SERVER_COMMAND)) 70 .andReturn(null) 71 .once(); 72 mMockDevice.waitForDeviceAvailable(); 73 EasyMock.expectLastCall().andThrow(new DeviceNotAvailableException()); 74 EasyMock.replay(mMockDevice, mMockBuildInfo); 75 76 mRestartSystemServerTargetPreparer.setUp(mMockDevice, mMockBuildInfo); 77 } 78 79 @Test 80 public void testTearDown_restart() throws Exception { 81 OptionSetter optionSetter = new OptionSetter(mRestartSystemServerTargetPreparer); 82 optionSetter.setOptionValue("restart-setup", "false"); 83 optionSetter.setOptionValue("restart-teardown", "true"); 84 85 EasyMock.expect(mMockDevice.enableAdbRoot()).andReturn(true).once(); 86 EasyMock.expect(mMockDevice.executeShellCommand("setprop dev.bootcomplete 0")) 87 .andReturn(null); 88 EasyMock.expect( 89 mMockDevice.executeShellCommand( 90 RestartSystemServerTargetPreparer.KILL_SERVER_COMMAND)) 91 .andReturn(null) 92 .once(); 93 mMockDevice.waitForDeviceAvailable(); 94 EasyMock.expectLastCall().once(); 95 EasyMock.replay(mMockDevice, mMockBuildInfo); 96 97 mRestartSystemServerTargetPreparer.tearDown(mMockDevice, mMockBuildInfo, null); 98 EasyMock.verify(mMockDevice, mMockBuildInfo); 99 } 100 101 @Test 102 public void testNone() throws Exception { 103 OptionSetter optionSetter = new OptionSetter(mRestartSystemServerTargetPreparer); 104 optionSetter.setOptionValue("restart-setup", "false"); 105 optionSetter.setOptionValue("restart-teardown", "false"); 106 EasyMock.replay(mMockDevice, mMockBuildInfo); 107 108 mRestartSystemServerTargetPreparer.setUp(mMockDevice, mMockBuildInfo); 109 EasyMock.verify(mMockDevice, mMockBuildInfo); 110 } 111 } 112