Home | History | Annotate | Download | only in targetprep
      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