Home | History | Annotate | Download | only in targetprep
      1 package com.android.tradefed.targetprep;
      2 
      3 import com.android.tradefed.build.IBuildInfo;
      4 import com.android.tradefed.build.IDeviceBuildInfo;
      5 import com.android.tradefed.device.DeviceNotAvailableException;
      6 import com.android.tradefed.device.ITestDevice;
      7 import com.android.tradefed.util.FileUtil;
      8 
      9 import junit.framework.TestCase;
     10 
     11 import org.easymock.EasyMock;
     12 
     13 import java.io.File;
     14 
     15 /**
     16  * Unit tests for {@link AllTestAppsInstallSetup}
     17  */
     18 public class AllTestAppsInstallSetupTest extends TestCase {
     19 
     20     private static final String SERIAL = "SERIAL";
     21     private AllTestAppsInstallSetup mPrep;
     22     private IDeviceBuildInfo mMockBuildInfo;
     23     private ITestDevice mMockTestDevice;
     24 
     25     /**
     26      * {@inheritDoc}
     27      */
     28     @Override
     29     public void setUp() throws Exception {
     30         super.setUp();
     31         mPrep = new AllTestAppsInstallSetup();
     32         mMockBuildInfo = EasyMock.createMock(IDeviceBuildInfo.class);
     33         mMockTestDevice = EasyMock.createMock(ITestDevice.class);
     34         EasyMock.expect(mMockTestDevice.getSerialNumber()).andStubReturn(SERIAL);
     35         EasyMock.expect(mMockTestDevice.getDeviceDescriptor()).andStubReturn(null);
     36     }
     37 
     38     public void testNotIDeviceBuildInfo() throws DeviceNotAvailableException {
     39         IBuildInfo mockBuildInfo = EasyMock.createMock(IBuildInfo.class);
     40         EasyMock.replay(mockBuildInfo, mMockTestDevice);
     41         try {
     42             mPrep.setUp(mMockTestDevice, mockBuildInfo);
     43             fail("Should have thrown a TargetSetupError");
     44         } catch (TargetSetupError e) {
     45             // expected
     46             assertEquals("Invalid buildInfo, expecting an IDeviceBuildInfo null",
     47                     e.getMessage());
     48         }
     49         EasyMock.verify(mockBuildInfo, mMockTestDevice);
     50     }
     51 
     52     public void testNoTestDir() throws DeviceNotAvailableException {
     53         EasyMock.expect(mMockBuildInfo.getTestsDir()).andStubReturn(new File(""));
     54         EasyMock.replay(mMockBuildInfo, mMockTestDevice);
     55         try {
     56             mPrep.setUp(mMockTestDevice, mMockBuildInfo);
     57             fail("Should have thrown a TargetSetupError");
     58         } catch (TargetSetupError e) {
     59             assertEquals("Failed to find a valid test zip directory. null",
     60                     e.getMessage());
     61         }
     62         EasyMock.verify(mMockBuildInfo, mMockTestDevice);
     63     }
     64 
     65     public void testNullTestDir() throws DeviceNotAvailableException {
     66 
     67         EasyMock.replay(mMockBuildInfo, mMockTestDevice);
     68         try {
     69             mPrep.installApksRecursively(null, mMockTestDevice);
     70             fail("Should have thrown a TargetSetupError");
     71         } catch (TargetSetupError e) {
     72             assertEquals("Invalid test zip directory! null", e.getMessage());
     73         }
     74         EasyMock.verify(mMockBuildInfo, mMockTestDevice);
     75     }
     76 
     77     public void testSetup() throws Exception {
     78         File testDir = FileUtil.createTempDir("TestAppSetupTest");
     79         // fake hierarchy of directory and files
     80         FileUtil.createTempFile("fakeApk", ".apk", testDir);
     81         FileUtil.createTempFile("fakeApk2", ".apk", testDir);
     82         FileUtil.createTempFile("notAnApk", ".txt", testDir);
     83         File subTestDir = FileUtil.createTempDir("SubTestAppSetupTest", testDir);
     84         FileUtil.createTempFile("subfakeApk", ".apk", subTestDir);
     85         try {
     86             EasyMock.expect(mMockBuildInfo.getTestsDir()).andReturn(testDir);
     87             EasyMock.expect(mMockTestDevice.installPackage((File)EasyMock.anyObject(),
     88                     EasyMock.eq(true))).andReturn(null).times(3);
     89             EasyMock.replay(mMockBuildInfo, mMockTestDevice);
     90             mPrep.setUp(mMockTestDevice, mMockBuildInfo);
     91             EasyMock.verify(mMockBuildInfo, mMockTestDevice);
     92         } finally {
     93             FileUtil.recursiveDelete(testDir);
     94         }
     95     }
     96 
     97     public void testInstallFailure() throws DeviceNotAvailableException {
     98         final String failure = "INSTALL_PARSE_FAILED_MANIFEST_MALFORMED";
     99         final String file = "TEST";
    100         EasyMock.expect(mMockTestDevice.installPackage((File)EasyMock.anyObject(),
    101                 EasyMock.eq(true))).andReturn(failure);
    102         EasyMock.replay(mMockBuildInfo, mMockTestDevice);
    103         try {
    104             mPrep.installApk(new File("TEST"), mMockTestDevice);
    105             fail("Should have thrown an exception");
    106         } catch (TargetSetupError e) {
    107             String expected = String.format("Failed to install %s on %s. Reason: '%s' "
    108                     + "null", file, SERIAL, failure);
    109             assertEquals(expected, e.getMessage());
    110         }
    111         EasyMock.verify(mMockBuildInfo, mMockTestDevice);
    112     }
    113 }
    114