diff options
author | Andreas Gampe <agampe@google.com> | 2019-04-12 13:11:30 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2019-04-15 10:27:28 -0700 |
commit | 1130892ec7602bb66b1a3ce71942c2c64f62c445 (patch) | |
tree | dee05c3ba2cfb6c961f3470c8f49174c1efb17a0 /tools/preload-check | |
parent | 6c702ac545ac0d3df6d877f9d316b0ebac290a0f (diff) |
PreloadCheck: Add preloaded-classes-blacklist
Embed the preloaded-classes-blacklist file and check all classes
in it.
Test: atest --test-mapping frameworks/base/tools/preload-check
Change-Id: I4292cae1eb24eafe1f63e914143433b57cc74751
Diffstat (limited to 'tools/preload-check')
-rw-r--r-- | tools/preload-check/Android.bp | 1 | ||||
-rw-r--r-- | tools/preload-check/src/com/android/preload/check/PreloadCheck.java | 41 |
2 files changed, 41 insertions, 1 deletions
diff --git a/tools/preload-check/Android.bp b/tools/preload-check/Android.bp index c84567b704a6..2488341bfd97 100644 --- a/tools/preload-check/Android.bp +++ b/tools/preload-check/Android.bp @@ -15,6 +15,7 @@ java_test_host { name: "PreloadCheck", srcs: ["src/**/*.java"], + java_resources: [":preloaded-classes-blacklist"], libs: ["tradefed"], test_suites: ["general-tests"], required: ["preload-check-device"], diff --git a/tools/preload-check/src/com/android/preload/check/PreloadCheck.java b/tools/preload-check/src/com/android/preload/check/PreloadCheck.java index dbdecdbecd12..1fde40252939 100644 --- a/tools/preload-check/src/com/android/preload/check/PreloadCheck.java +++ b/tools/preload-check/src/com/android/preload/check/PreloadCheck.java @@ -25,6 +25,9 @@ import com.android.tradefed.testtype.IDeviceTest; import org.junit.Test; import org.junit.runner.RunWith; +import java.io.BufferedReader; +import java.io.InputStreamReader; + @RunWith(DeviceJUnit4ClassRunner.class) public class PreloadCheck implements IDeviceTest { private ITestDevice mTestDevice; @@ -65,6 +68,35 @@ public class PreloadCheck implements IDeviceTest { run("com.android.preload.check.Initialized", "android.animation.Animator"); } + /** + * Test the classes mentioned in the embedded preloaded-classes blacklist. + */ + @Test + public void testBlackList() throws Exception { + StringBuilder sb = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new InputStreamReader(getClass() + .getResourceAsStream("/preloaded-classes-blacklist")))) { + String s; + while ((s = br.readLine()) != null) { + s = s.trim(); + if (s.startsWith("#") || s.isEmpty()) { + continue; + } + try { + run("com.android.preload.check.NotInitialized", s); + } catch (Throwable t) { + if (sb.length() > 0) { + sb.append('\n'); + } + sb.append(t.getMessage()); + } + } + } + if (sb.length() > 0) { + throw new RuntimeException(sb.toString()); + } + } + private void run(String cmd, String... args) throws Exception { StringBuilder sb = new StringBuilder(); sb.append("app_process ") @@ -72,9 +104,16 @@ public class PreloadCheck implements IDeviceTest { .append(" /system/bin ") .append(cmd); for (String arg : args) { - sb.append(' ').append(arg); + sb.append(' ').append(escape(arg)); } String res = mTestDevice.executeShellCommand(sb.toString()); assertEquals(sb.toString(), "OK", res.trim()); } + + private static String escape(String input) { + if (input.indexOf('$') == -1) { + return input; + } + return input.replace("$", "\\$"); + } } |