Merge "Add ability to stage multiple apexs." am: 7bd2a5e4fd
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1490738 Change-Id: I2db219e6e6e9f2ba6c685cb2462da66bcbe5f91f
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.internal.util.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import com.android.tradefed.device.DeviceNotAvailableException;
|
||||
@@ -114,6 +115,24 @@ public class SystemPreparer extends ExternalResource {
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Stages multiple APEXs within the host test jar onto the device. */
|
||||
public SystemPreparer stageMultiplePackages(String[] resourcePaths, String[] packageNames)
|
||||
throws DeviceNotAvailableException, IOException {
|
||||
assertEquals(resourcePaths.length, packageNames.length);
|
||||
final ITestDevice device = mDeviceProvider.getDevice();
|
||||
final String[] adbCommandLine = new String[resourcePaths.length + 2];
|
||||
adbCommandLine[0] = "install-multi-package";
|
||||
adbCommandLine[1] = "--staged";
|
||||
for (int i = 0; i < resourcePaths.length; i++) {
|
||||
final File tmpFile = copyResourceToTemp(resourcePaths[i]);
|
||||
adbCommandLine[i + 2] = tmpFile.getAbsolutePath();
|
||||
mInstalledPackages.add(packageNames[i]);
|
||||
}
|
||||
final String output = device.executeAdbCommand(adbCommandLine);
|
||||
assertTrue(output.contains("Success. Reboot device to apply staged session"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets the enable state of an overlay package. */
|
||||
public SystemPreparer setOverlayEnabled(String packageName, boolean enabled)
|
||||
throws DeviceNotAvailableException {
|
||||
@@ -182,9 +201,27 @@ public class SystemPreparer extends ExternalResource {
|
||||
return this;
|
||||
}
|
||||
|
||||
private static @Nullable String getFileExtension(@Nullable String path) {
|
||||
if (path == null) {
|
||||
return null;
|
||||
}
|
||||
final int lastDot = path.lastIndexOf('.');
|
||||
if (lastDot >= 0) {
|
||||
return path.substring(lastDot + 1);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/** Copies a file within the host test jar to a temporary file on the host machine. */
|
||||
private File copyResourceToTemp(String resourcePath) throws IOException {
|
||||
final File tempFile = mHostTempFolder.newFile();
|
||||
final String ext = getFileExtension(resourcePath);
|
||||
final File tempFile;
|
||||
if (ext != null) {
|
||||
tempFile = File.createTempFile("junit", "." + ext, mHostTempFolder.getRoot());
|
||||
} else {
|
||||
tempFile = mHostTempFolder.newFile();
|
||||
}
|
||||
final ClassLoader classLoader = getClass().getClassLoader();
|
||||
try (InputStream assetIs = classLoader.getResourceAsStream(resourcePath);
|
||||
FileOutputStream assetOs = new FileOutputStream(tempFile)) {
|
||||
|
||||
Reference in New Issue
Block a user