aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2017-11-29 17:21:03 -0800
committerArthur Eubanks <aeubanks@google.com>2017-11-29 17:51:04 -0800
commite6d49cc410cce0ce70298e39648c92ee46258a39 (patch)
tree382b5de71640dcebe736b36c6a51cf734d97fdbf /src
parent51d0475fdac2fb965f9fdd4ed98f9712b98e6aff (diff)
downloadcontrib-e6d49cc410cce0ce70298e39648c92ee46258a39.tar.gz
Move SetPackagesRecentlyUsed to tools/, add packages option
Add option to specify which packages to set recently used. Test: integration test using atest Change-Id: Ieed60c939fbd406d23461c8de5c0d8b17a139cc0
Diffstat (limited to 'src')
-rw-r--r--src/com/android/tradefed/targetprep/SetPackagesRecentlyUsed.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/com/android/tradefed/targetprep/SetPackagesRecentlyUsed.java b/src/com/android/tradefed/targetprep/SetPackagesRecentlyUsed.java
new file mode 100644
index 0000000..5f1bb21
--- /dev/null
+++ b/src/com/android/tradefed/targetprep/SetPackagesRecentlyUsed.java
@@ -0,0 +1,68 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+package com.android.tradefed.targetprep;
+
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.config.Option;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Reads the list of packages on the phone and sets all packages to be 'last used' 24 hrs ago.
+ * Writes to /data/system/package-usage.list and deletes it at teardown.
+ */
+public class SetPackagesRecentlyUsed implements ITargetPreparer, ITargetCleaner {
+
+ private static final String LINE_PREFIX = "package:";
+ private static final String PACKAGE_USAGE_FILE = "/data/system/package-usage.list";
+
+ @Option(
+ name = "package-recently-used-time",
+ description = "Time since package last used",
+ isTimeVal = true
+ )
+ private long mRecentTimeMillis = TimeUnit.DAYS.toMillis(1);
+
+ @Option(
+ name = "package-recently-used-name",
+ description = "Package(s) to set. If none specified, then all are set."
+ )
+ private List<String> mPackages = new ArrayList<>();
+
+ @Override
+ public void setUp(ITestDevice device, IBuildInfo buildInfo)
+ throws TargetSetupError, BuildError, DeviceNotAvailableException {
+ long deviceTimeMillis = TimeUnit.SECONDS.toMillis(device.getDeviceDate());
+ long deviceRecentMillis = deviceTimeMillis - mRecentTimeMillis;
+ StringBuilder builder = new StringBuilder();
+ builder.append("PACKAGE_USAGE__VERSION_1\n");
+ for (String p : getPackagesToSet(device)) {
+ if (p.startsWith(LINE_PREFIX)) {
+ builder.append(p.substring(LINE_PREFIX.length()));
+ builder.append(" ");
+ builder.append(Long.toString(deviceRecentMillis));
+ builder.append(" 0 0 0 0 0 0 0\n");
+ }
+ }
+ device.pushString(builder.toString(), PACKAGE_USAGE_FILE);
+ }
+
+ private List<String> getPackagesToSet(ITestDevice device) throws DeviceNotAvailableException {
+ if (mPackages.isEmpty()) {
+ String[] packages = device.executeShellCommand("cmd package list package").split("\n");
+ return Arrays.asList(packages);
+ } else {
+ return mPackages;
+ }
+ }
+
+ @Override
+ public void tearDown(ITestDevice device, IBuildInfo buildInfo, Throwable e)
+ throws DeviceNotAvailableException {
+ device.executeShellCommand("rm " + PACKAGE_USAGE_FILE);
+ }
+}