From f1d1050626d8e04d8477a07c0f63bf6629d9036b Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 28 Sep 2018 15:41:55 +0000 Subject: Revert^2 "Harmony: Change Mock build" This reverts commit 76b5e70d2d363618427747bb073a368ffb55687b. Include the prepackaged harmony class file. There are no longer reasons for embedding dex files as base64. Partially reverts commit db3fb7d72b025d0c8d4922f8c24abdff0999274f. Bug: 116674705 Test: mmma external/apache-harmony/jdwp Test: m apache-harmony-jdwp-tests-hostdex vogar && art/tools/run-jdwp-tests.sh --mode=host Change-Id: Iff70a513bc13b137948b2d9e0442c5128501c822 --- jdwp/Android.bp | 10 ++ .../jpda/tests/jdwp/Events/ClassPrepareTest.java | 2 +- .../SourceDebugExtensionDebuggee.java | 142 +-------------------- .../ReferenceType/SourceDebugExtensionTest.java | 3 +- 4 files changed, 19 insertions(+), 138 deletions(-) diff --git a/jdwp/Android.bp b/jdwp/Android.bp index 1d9c0b3..feb8d5c 100644 --- a/jdwp/Android.bp +++ b/jdwp/Android.bp @@ -1,3 +1,12 @@ +java_genrule { + name: "SourceDebugExtensionMockClass_gen", + host_supported: true, + srcs: ["src/test/resources/org/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass.class"], + tools: ["soong_zip"], + cmd: "$(location soong_zip) -jar -o $(out) -C external/apache-harmony/jdwp/src/test/resources -f $(in)", + out: ["SourceDebugExtensionMockClass_gen.jar"], +} + java_test { name: "apache-harmony-jdwp-tests", hostdex: true, @@ -5,6 +14,7 @@ java_test { srcs: ["src/test/java/**/*.java"], no_framework_libs: true, libs: ["junit"], + static_libs: ["SourceDebugExtensionMockClass_gen"], // b/73499927 errorprone: { diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java index ae3033d..1f24c55 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java @@ -150,7 +150,7 @@ public class ClassPrepareTest extends JDWPEventTestCase { return; } - String expectedClassSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass;"; + String expectedClassSignature = getClassSignature(SourceDebugExtensionMockClass.class); logWriter.println("==> testClassPrepareEventForSourceNameMatch started"); synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee.java index ea90778..ebf74e8 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee.java @@ -25,153 +25,23 @@ */ package org.apache.harmony.jpda.tests.jdwp.ReferenceType; -import java.lang.reflect.Constructor; import java.lang.reflect.Proxy; -import java.net.URLClassLoader; -import java.net.URL; -import java.nio.ByteBuffer; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Base64; +import org.apache.harmony.jpda.tests.jdwp.Events.SourceDebugExtensionMockClass; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; import org.apache.harmony.jpda.tests.share.SyncDebuggee; public class SourceDebugExtensionDebuggee extends SyncDebuggee { - private final static String classWithSourceDebugExtension = - "org.apache.harmony.jpda.tests.jdwp.Events.SourceDebugExtensionMockClass"; - - private final static String inMemoryDexClassLoaderClass = - "dalvik.system.InMemoryDexClassLoader"; - - /* - * A base64 string of a dex file built from the - * class packaged with apache-harmony for JSR45 testing: - * - * cd apache-harmony/jdwp/src/test/resources - * dx --dex --output=classes.dex \ - * org/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass.class - * - * This simplifies dealing with multiple dex files in the Android - * build system and with Jack which discards the JSR45 metadata. - */ - private final static String base64DexWithExtensionClass = -"ZGV4CjAzNQAktKYbHXK+eDSBH4IRfDw2pS8X3+CKeds0BAAAcAAAAHhWNBIAAAAAAAAAAHADAAAT" + -"AAAAcAAAAAgAAAC8AAAAAwAAANwAAAABAAAAAAEAAAQAAAAIAQAAAQAAACgBAADsAgAASAEAAKYB" + -"AACuAQAAuwEAAOUBAAD8AQAAEAIAACQCAAA4AgAAgwIAAOkCAAANAwAAEAMAABQDAAApAwAALwMA" + -"ADUDAAA6AwAAQwMAAEkDAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAKAAAADAAAAAoAAAAGAAAA" + -"AAAAAAsAAAAGAAAAmAEAAAsAAAAGAAAAoAEAAAQAAQAPAAAAAQABABAAAAACAAAAAAAAAAUAAAAA" + -"AAAABQACAA4AAAAFAAAAAQAAAAIAAAAAAAAACQAAAIgBAABiAwAAAAAAAAEAAABcAwAAAQABAAEA" + -"AABQAwAABAAAAHAQAQAAAA4AAwABAAIAAABVAwAACAAAAGIAAAAaAQEAbiAAABAADgBIAQAAAAAA" + -"AAAAAAAAAAAAAQAAAAMAAAABAAAABwAGPGluaXQ+AAtIZWxsbyBXb3JsZAAoTGRhbHZpay9hbm5v" + -"dGF0aW9uL1NvdXJjZURlYnVnRXh0ZW5zaW9uOwAVTGphdmEvaW8vUHJpbnRTdHJlYW07ABJMamF2" + -"YS9sYW5nL09iamVjdDsAEkxqYXZhL2xhbmcvU3RyaW5nOwASTGphdmEvbGFuZy9TeXN0ZW07AElM" + -"b3JnL2FwYWNoZS9oYXJtb255L2pwZGEvdGVzdHMvamR3cC9FdmVudHMvU291cmNlRGVidWdFeHRl" + -"bnNpb25Nb2NrQ2xhc3M7AGRTTUFQCmhlbGxvd29ybGRfanNwLmphdmEKSlNQCipTIEpTUAoqRgor" + -"IDAgaGVsbG93b3JsZC5qc3AKaGVsbG93b3JsZC5qc3AKKkwKMSw1OjUzCjY6NTgsMwo3LDQ6NjEK" + -"KkUKACJTb3VyY2VEZWJ1Z0V4dGVuc2lvbk1vY2tDbGFzcy5qYXZhAAFWAAJWTAATW0xqYXZhL2xh" + -"bmcvU3RyaW5nOwAEYXJncwAEbWFpbgADb3V0AAdwcmludGxuAAR0aGlzAAV2YWx1ZQADAAcOAAYB" + -"DgcOeAACAAESFwgAAAIAAoGABNACAQnoAhAAAAAAAAAAAQAAAAAAAAABAAAAEwAAAHAAAAACAAAA" + -"CAAAALwAAAADAAAAAwAAANwAAAAEAAAAAQAAAAABAAAFAAAABAAAAAgBAAAGAAAAAQAAACgBAAAD" + -"EAAAAQAAAEgBAAABIAAAAgAAAFABAAAGIAAAAQAAAIgBAAABEAAAAgAAAJgBAAACIAAAEwAAAKYB" + -"AAADIAAAAgAAAFADAAAEIAAAAQAAAFwDAAAAIAAAAQAAAGIDAAAAEAAAAQAAAHADAAA="; - - /* - * A base64 string of a jar file containing: - * org/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass.class - */ - private final static String base64JarWithExtensionClass = -"UEsDBBQACAgIAAZwmUoAAAAAAAAAAAAAAAAJAAQATUVUQS1JTkYv/soAAAMAUEsHCAAAAAACAAAA" + -"AAAAAFBLAwQUAAgICAAGcJlKAAAAAAAAAAAAAAAAFAAAAE1FVEEtSU5GL01BTklGRVNULk1G803M" + -"y0xLLS7RDUstKs7Mz7NSMNQz4OVyLkpNLElN0XWqBAlY6BnEm5jqZuaVpBblJeYoaPgXJSbnpCo4" + -"5xcV5BcllgD1afJy8XIBAFBLBwiUuAa1TAAAAE0AAABQSwMECgAACAAATYIRSQAAAAAAAAAAAAAA" + -"AAQAAABvcmcvUEsDBAoAAAgAAE2CEUkAAAAAAAAAAAAAAAALAAAAb3JnL2FwYWNoZS9QSwMECgAA" + -"CAAATYIRSQAAAAAAAAAAAAAAABMAAABvcmcvYXBhY2hlL2hhcm1vbnkvUEsDBAoAAAgAAE2CEUkA" + -"AAAAAAAAAAAAAAAYAAAAb3JnL2FwYWNoZS9oYXJtb255L2pwZGEvUEsDBAoAAAgAAE2CEUkAAAAA" + -"AAAAAAAAAAAeAAAAb3JnL2FwYWNoZS9oYXJtb255L2pwZGEvdGVzdHMvUEsDBAoAAAgAAE2CEUkA" + -"AAAAAAAAAAAAAAAjAAAAb3JnL2FwYWNoZS9oYXJtb255L2pwZGEvdGVzdHMvamR3cC9QSwMECgAA" + -"CAAAHUmYSgAAAAAAAAAAAAAAACoAAABvcmcvYXBhY2hlL2hhcm1vbnkvanBkYS90ZXN0cy9qZHdw" + -"L0V2ZW50cy9QSwMEFAAICAgATYIRSQAAAAAAAAAAAAAAAE0AAABvcmcvYXBhY2hlL2hhcm1vbnkv" + -"anBkYS90ZXN0cy9qZHdwL0V2ZW50cy9Tb3VyY2VEZWJ1Z0V4dGVuc2lvbk1vY2tDbGFzcy5jbGFz" + -"c61RTW/TQBB926Rxsg20JE35Brdc0hDVRCUtShASKikfciGSUThwQBt75TjYXst2Wvqz4AASB34A" + -"PwoxdipFoIgTe5i3M/tm9N7sz1/ffwDo4J6GFYbnKnYNEQl7Io2JiAMVnhvTyBFGKpM0MabOWWQM" + -"TmVId0vNYls+k+OZO/iUyjDxVHii7I9HvkgSDUWGjak4FYYvQtd4M55KO2UoPfZCL33CUGjujhiK" + -"R8qRHAVUqlhFiWHd9EL5ehaMZfxWjH3JUDOVLfyRiL0svygW04mXMLw0/5PcPo0MhBcybDXfmwvZ" + -"Vhp7odvfHVVwBXUNtT9MWedJKoMqNtEgQ2pG/hrzZk8ZQ+pMqV+KoF/GVYa1F9L3lf5Oxb7DcR03" + -"NdxgqC/hV3ELtxm0KCv5JKrRXKaJNIvYpTXUl0hm4HPHx162sJ1/2t/L2hk2l5GwDTKH7KzQjX6J" + -"okaZQcgIV1vfUP6cP3OKpbxYwBrF6pxAeImwgstYv2g+zIdR7Qs2altfcW0xgBNmY8pEXAyp4A7u" + -"5hw9j9vYIXSsk6dDPskWe5bt9cM0iXIz/JU15C1Lz+GY39cf6AvWHrH4X2nL5J12t9fd5we97qP2" + -"Pj9sP+wddHhrwH8DUEsHCFc9MsLTAQAAIwMAAFBLAQIUABQACAgIAAZwmUoAAAAAAgAAAAAAAAAJ" + -"AAQAAAAAAAAAAAAAAAAAAABNRVRBLUlORi/+ygAAUEsBAhQAFAAICAgABnCZSpS4BrVMAAAATQAA" + -"ABQAAAAAAAAAAAAAAAAAPQAAAE1FVEEtSU5GL01BTklGRVNULk1GUEsBAgoACgAACAAATYIRSQAA" + -"AAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAywAAAG9yZy9QSwECCgAKAAAIAABNghFJAAAAAAAAAAAA" + -"AAAACwAAAAAAAAAAAAAAAADtAAAAb3JnL2FwYWNoZS9QSwECCgAKAAAIAABNghFJAAAAAAAAAAAA" + -"AAAAEwAAAAAAAAAAAAAAAAAWAQAAb3JnL2FwYWNoZS9oYXJtb255L1BLAQIKAAoAAAgAAE2CEUkA" + -"AAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAEcBAABvcmcvYXBhY2hlL2hhcm1vbnkvanBkYS9QSwEC" + -"CgAKAAAIAABNghFJAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAB9AQAAb3JnL2FwYWNoZS9oYXJt" + -"b255L2pwZGEvdGVzdHMvUEsBAgoACgAACAAATYIRSQAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAA" + -"uQEAAG9yZy9hcGFjaGUvaGFybW9ueS9qcGRhL3Rlc3RzL2pkd3AvUEsBAgoACgAACAAAHUmYSgAA" + -"AAAAAAAAAAAAACoAAAAAAAAAAAAAAAAA+gEAAG9yZy9hcGFjaGUvaGFybW9ueS9qcGRhL3Rlc3Rz" + -"L2pkd3AvRXZlbnRzL1BLAQIUABQACAgIAE2CEUlXPTLC0wEAACMDAABNAAAAAAAAAAAAAAAAAEIC" + -"AABvcmcvYXBhY2hlL2hhcm1vbnkvanBkYS90ZXN0cy9qZHdwL0V2ZW50cy9Tb3VyY2VEZWJ1Z0V4" + -"dGVuc2lvbk1vY2tDbGFzcy5jbGFzc1BLBQYAAAAACgAKAN8CAACQBAAAAAA="; - - private ClassLoader getClassLoaderInitializedWithDexFile() { - try { - byte[] dexBytes = Base64.getDecoder().decode(base64DexWithExtensionClass); - ByteBuffer dexBuffer = ByteBuffer.wrap(dexBytes); - Class klass = Class.forName(inMemoryDexClassLoaderClass); - Constructor constructor = klass.getConstructor(ByteBuffer.class, ClassLoader.class); - return (ClassLoader) constructor.newInstance(dexBuffer, - ClassLoader.getSystemClassLoader()); - } catch (Exception e) { - logWriter.println("--> Debuggee: Failed to instantiate " + inMemoryDexClassLoaderClass - + " " + e); - return null; - } - } - - private ClassLoader getClassLoaderInitializedWithClassFile() { - try { - byte[] jarBytes = Base64.getDecoder().decode(base64JarWithExtensionClass); - Path jarPath = Files.createTempFile(null, "jar"); - jarPath.toFile().deleteOnExit(); - Files.write(jarPath, jarBytes); - return new URLClassLoader(new URL[] { jarPath.toUri().toURL() }); - } catch (Exception e) { - logWriter.println("--> Debuggee: Failed to instantiate URLClassLoader: " + e); - return null; - } - } - @Override public void run() { - ClassLoader classLoader = null; - if (System.getProperty("java.vendor").contains("Android")) { - classLoader = getClassLoaderInitializedWithDexFile(); - } else { - classLoader = getClassLoaderInitializedWithClassFile(); - } - - Class klass = null; - try { - klass = classLoader.loadClass(classWithSourceDebugExtension); - } catch (ClassNotFoundException e) { - logWriter.println("--> Debuggee: Could not find class " + - classWithSourceDebugExtension); - } - // Create an instance of classWithSourceDebugExtension so the // SourceDebugExtension metadata can be reported back to the debugger. - Object o = null; - if (klass != null) { - try { - o = klass.getConstructor().newInstance(); - } catch (Exception e) { - logWriter.println("--> Debuggee: Failed to instantiate " + - classWithSourceDebugExtension + ": " + e); - } + try { + SourceDebugExtensionMockClass.class.getConstructor().newInstance(); + } catch (Exception e) { + logWriter.println("--> Debuggee: Failed to instantiate " + + "SourceDebugExtensionMockClass: " + e); } // Instantiate a proxy whose name should contain "$Proxy". diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionTest.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionTest.java index 7f40430..0a057e7 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionTest.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionTest.java @@ -29,6 +29,7 @@ import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket; import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands; import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants; import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket; +import org.apache.harmony.jpda.tests.jdwp.Events.SourceDebugExtensionMockClass; import org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; @@ -116,7 +117,7 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { */ public void testSourceDebugExtension001() { doTest("testSourceDebugExtension001", - "Lorg/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass;", + getClassSignature(SourceDebugExtensionMockClass.class), JDWPConstants.Error.NONE); } -- cgit v1.2.3