Merge "Add ability to stage multiple apexs." am: 7bd2a5e4fd am: 20d93a701c am: 5401dfbfb2
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1490738 Change-Id: Ie31a889460f3b3d87a5a6515fbeef50b5d105f19
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.internal.util.test;
|
package com.android.internal.util.test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import com.android.tradefed.device.DeviceNotAvailableException;
|
import com.android.tradefed.device.DeviceNotAvailableException;
|
||||||
@@ -114,6 +115,24 @@ public class SystemPreparer extends ExternalResource {
|
|||||||
return this;
|
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. */
|
/** Sets the enable state of an overlay package. */
|
||||||
public SystemPreparer setOverlayEnabled(String packageName, boolean enabled)
|
public SystemPreparer setOverlayEnabled(String packageName, boolean enabled)
|
||||||
throws DeviceNotAvailableException {
|
throws DeviceNotAvailableException {
|
||||||
@@ -182,9 +201,27 @@ public class SystemPreparer extends ExternalResource {
|
|||||||
return this;
|
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. */
|
/** Copies a file within the host test jar to a temporary file on the host machine. */
|
||||||
private File copyResourceToTemp(String resourcePath) throws IOException {
|
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();
|
final ClassLoader classLoader = getClass().getClassLoader();
|
||||||
try (InputStream assetIs = classLoader.getResourceAsStream(resourcePath);
|
try (InputStream assetIs = classLoader.getResourceAsStream(resourcePath);
|
||||||
FileOutputStream assetOs = new FileOutputStream(tempFile)) {
|
FileOutputStream assetOs = new FileOutputStream(tempFile)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user