diff options
author | Arthur Eubanks <aeubanks@google.com> | 2017-11-29 17:21:03 -0800 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2017-11-29 17:51:04 -0800 |
commit | e6d49cc410cce0ce70298e39648c92ee46258a39 (patch) | |
tree | 382b5de71640dcebe736b36c6a51cf734d97fdbf /src | |
parent | 51d0475fdac2fb965f9fdd4ed98f9712b98e6aff (diff) | |
download | contrib-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.java | 68 |
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); + } +} |