diff options
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("$", "\\$"); + } } |