diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-05-17 08:04:48 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-05-17 08:04:48 +0000 |
commit | 236ad19f28edd46387b31793117be6fda1e81bae (patch) | |
tree | 592db96c18ef81b49dc92aabaa2651835931d48c | |
parent | f9b8b462042c49e0935675095f6f63de1f4af594 (diff) | |
parent | 0970614a69e214ea34cb896e4618526725e70690 (diff) | |
download | apache-harmony-236ad19f28edd46387b31793117be6fda1e81bae.tar.gz |
release-request-655284b0-7f0b-48b5-b01d-27f48a99f2c0-for-git_oc-mr1-release-4017105 snap-temp-L82600000064873863
Change-Id: I191efb638f509c0139f5a27ecc7c67c7a6393c86
8 files changed, 123 insertions, 30 deletions
diff --git a/jdwp/Android.mk b/jdwp/Android.mk index 4fe4066..a2adcd9 100644 --- a/jdwp/Android.mk +++ b/jdwp/Android.mk @@ -35,6 +35,7 @@ LOCAL_NO_EMMA_INSTRUMENT := true LOCAL_NO_EMMA_COMPILE := true LOCAL_CTS_TEST_PACKAGE := android.jdwp LOCAL_CTS_TARGET_RUNTIME_ARGS := $(cts_jdwp_test_target_runtime_args) +LOCAL_ERROR_PRONE_FLAGS := -Xep:ArrayToString:ERROR include $(BUILD_CTS_TARGET_JAVA_LIBRARY) include $(CLEAR_VARS) diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ArrayType/NewInstanceDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ArrayType/NewInstanceDebuggee.java index 9c5d2d5..7659c7b 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ArrayType/NewInstanceDebuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ArrayType/NewInstanceDebuggee.java @@ -28,6 +28,8 @@ package org.apache.harmony.jpda.tests.jdwp.ArrayType; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; import org.apache.harmony.jpda.tests.share.SyncDebuggee; +import java.util.Arrays; + /** * Debuggee for JDWP NewInstanceTest unit test which * exercises ArrayType.NewInstance command. @@ -44,7 +46,7 @@ public class NewInstanceDebuggee extends SyncDebuggee { logWriter.println("-> array of classes "+ clazz[0].name + " is created"); synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY); logWriter.println("-> Hello World"); - logWriter.println("DUMP{" + checkString + checkInt + ia + ca + "}"); + logWriter.println("DUMP{" + Arrays.toString(checkString) + Arrays.toString(checkInt) + Arrays.toString(ia) + Arrays.toString(ca) + "}"); synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); } diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/GetValues003Debuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/GetValues003Debuggee.java index 7adaed6..858f2a5 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/GetValues003Debuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/GetValues003Debuggee.java @@ -28,6 +28,8 @@ package org.apache.harmony.jpda.tests.jdwp.ObjectReference; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; import org.apache.harmony.jpda.tests.share.SyncDebuggee; +import java.util.Arrays; + public class GetValues003Debuggee extends SyncDebuggee { static GetValues003Debuggee testedObject; @@ -69,8 +71,8 @@ public class GetValues003Debuggee extends SyncDebuggee { testedObject.classLoaderField = null; logWriter.println("\n--> Debuggee: GetValues003Debuggee: Before ObjectReference::GetValues command:"); - logWriter.println("--> intArrayField value = " + testedObject.intArrayField); - logWriter.println("--> objectArrayField value = " + testedObject.objectArrayField); + logWriter.println("--> intArrayField value = " + Arrays.toString(testedObject.intArrayField)); + logWriter.println("--> objectArrayField value = " + Arrays.toString(testedObject.objectArrayField)); logWriter.println("--> objectField value = " + testedObject.objectField); logWriter.println("--> stringField value = " + testedObject.stringField); logWriter.println("--> threadField value = " + testedObject.threadField); diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/SetValues004Debuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/SetValues004Debuggee.java index c2b50d2..0e6f9e1 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/SetValues004Debuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/SetValues004Debuggee.java @@ -28,6 +28,8 @@ package org.apache.harmony.jpda.tests.jdwp.ObjectReference; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; import org.apache.harmony.jpda.tests.share.SyncDebuggee; +import java.util.Arrays; + public class SetValues004Debuggee extends SyncDebuggee { static String passedStatus = "PASSED"; @@ -63,8 +65,8 @@ public class SetValues004Debuggee extends SyncDebuggee { testedObject.classLoaderField = testedObject.classField.getClassLoader(); logWriter.println("\n--> Debuggee: SetValues004Debuggee: Before ObjectReference::SetValues command:"); - logWriter.println("--> intArrayField value = " + testedObject.intArrayField); - logWriter.println("--> objectArrayField value = " + testedObject.objectArrayField); + logWriter.println("--> intArrayField value = " + Arrays.toString(testedObject.intArrayField)); + logWriter.println("--> objectArrayField value = " + Arrays.toString(testedObject.objectArrayField)); logWriter.println("--> objectField value = " + testedObject.objectField); logWriter.println("--> stringField value = " + testedObject.stringField); logWriter.println("--> threadField value = " + testedObject.threadField); @@ -76,7 +78,7 @@ public class SetValues004Debuggee extends SyncDebuggee { synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); logWriter.println("\n--> Debuggee: SetValues004Debuggee: After ObjectReference::SetValues command:"); - logWriter.println("--> intArrayField value = " + testedObject.intArrayField); + logWriter.println("--> intArrayField value = " + Arrays.toString(testedObject.intArrayField)); if ( testedObject.intArrayField != null ) { logWriter.println("##> Debuggee: FAILURE: Unexpected value"); logWriter.println("##> Expected value = " + null); @@ -85,7 +87,7 @@ public class SetValues004Debuggee extends SyncDebuggee { logWriter.println("--> Debuggee: OK. Expected value"); } - logWriter.println("--> objectArrayField value = " + testedObject.objectArrayField); + logWriter.println("--> objectArrayField value = " + Arrays.toString(testedObject.objectArrayField)); if ( testedObject.objectArrayField != null ) { logWriter.println("##> Debuggee: FAILURE: Unexpected value"); logWriter.println("##> Expected value = " + null); diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/GetValues005Debuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/GetValues005Debuggee.java index dad70a6..1b88509 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/GetValues005Debuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/GetValues005Debuggee.java @@ -28,6 +28,8 @@ package org.apache.harmony.jpda.tests.jdwp.ReferenceType; import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; import org.apache.harmony.jpda.tests.share.SyncDebuggee; +import java.util.Arrays; + public class GetValues005Debuggee extends SyncDebuggee { static int intArrayField[]; // JDWP_TAG_ARRAY = 91 @@ -66,8 +68,8 @@ public class GetValues005Debuggee extends SyncDebuggee { classLoaderField = null; logWriter.println("\n--> Debuggee: GetValues005Debuggee: Before ReferenceType::GetValues command:"); - logWriter.println("--> intArrayField value = " + intArrayField); - logWriter.println("--> objectArrayField value = " + objectArrayField); + logWriter.println("--> intArrayField value = " + Arrays.toString(intArrayField)); + logWriter.println("--> objectArrayField value = " + Arrays.toString(objectArrayField)); logWriter.println("--> objectField value = " + objectField); logWriter.println("--> stringField value = " + stringField); logWriter.println("--> threadField value = " + threadField); 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 5a04599..ea90778 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 @@ -26,6 +26,7 @@ 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; @@ -173,11 +174,17 @@ public class SourceDebugExtensionDebuggee extends SyncDebuggee { } } + // Instantiate a proxy whose name should contain "$Proxy". + Class proxy = Proxy.getProxyClass(SomeInterface.class.getClassLoader(), + new Class[] { SomeInterface.class }); + synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY); logWriter.println("--> Debuggee: SourceDebugExtensionDebuggee..."); synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); } + interface SomeInterface {} + public static void main(String [] args) { runDebuggee(SourceDebugExtensionDebuggee.class); } 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 93dbfa9..7f40430 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 @@ -43,8 +43,6 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { static final String thisCommandName = "ReferenceType.SourceDebugExtension command"; static final String debuggeeSignature = "Lorg/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee;"; - static final String classWithSourceDebugExtension = - "Lorg/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass;"; static final String expectedSourceDebugExtension = "SMAP\nhelloworld_jsp.java\nJSP\n*S JSP\n" + "*F\n+ 0 helloworld.jsp\nhelloworld.jsp\n*L\n1,5:53\n6:58,3\n7,4:61\n*E\n"; @@ -53,20 +51,8 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { return "org.apache.harmony.jpda.tests.jdwp.ReferenceType.SourceDebugExtensionDebuggee"; } - /** - * This testcase exercises ReferenceType.SourceDebugExtension command. - * - * <BR>The test starts a SourceDebugExtensionDebuggee instance, which instantiates a - * SourceDebugExtensionMockClass instance. The SourceDebugExtensionMockClass comes from a - * class file generated by a JSP to Java bytecode compiler. The testcase requests - * referenceTypeId for this class by VirtualMachine.ClassesBySignature command, then - * performs ReferenceType.SourceDebugExtension to get the JSR45 metadata for the - * class. The testcase checks that no any unexpected ERROR is returned and that - * the JSR45 metadata matches the expected value. - */ - public void testSourceDebugExtension001() { - String thisTestName = "testSourceDebugExtension001"; + private void doTest(String testName, String classSignature, int expectedErrorCode) { //check capability, relevant for this test logWriter.println("=> Check capability: canGetSourceDebugExtension"); if (!debuggeeWrapper.vmMirror.canGetSourceDebugExtension()) { @@ -74,10 +60,10 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { return; } - logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": START..."); + logWriter.println("==> " + testName + " for " + thisCommandName + ": START..."); synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); - long refTypeID = getClassIDBySignature(classWithSourceDebugExtension); - logWriter.println("=> Class with SourceDebugExtension = " + classWithSourceDebugExtension); + long refTypeID = getClassIDBySignature(classSignature); + logWriter.println("=> Class with SourceDebugExtension = " + classSignature); logWriter.println("=> referenceTypeID for class with SourceDebugExtension = " + refTypeID); logWriter.println("=> CHECK: send " + thisCommandName + " and check reply..."); @@ -90,6 +76,7 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { checkedCommand = null; short errorCode = checkedReply.getErrorCode(); + assertEquals(expectedErrorCode, errorCode); switch ( errorCode ) { case JDWPConstants.Error.NONE: @@ -98,6 +85,9 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { logWriter.println("=> Returned SourceDebugExtension = " + sourceDebugExtension); assertEquals(expectedSourceDebugExtension, sourceDebugExtension); break; + case JDWPConstants.Error.ABSENT_INFORMATION: + logWriter.println("=> ABSENT_INFORMATION is returned"); + break; default: logWriter.println("\n## FAILURE: " + thisCommandName + " returns unexpected ERROR = " + errorCode + "(" + JDWPConstants.Error.getName(errorCode) + ")"); @@ -107,9 +97,95 @@ public class SourceDebugExtensionTest extends JDWPSyncTestCase { assertAllDataRead(checkedReply); - logWriter.println("=> CHECK PASSED: No any unexpected ERROR is returned"); + logWriter.println("=> CHECK PASSED: Received expected result"); synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); - logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": FINISH"); + logWriter.println("==> " + testName + " for " + thisCommandName + ": FINISH"); + } + + /** + * This testcase exercises ReferenceType.SourceDebugExtension command. + * + * <BR>The test starts a SourceDebugExtensionDebuggee instance, which instantiates a + * SourceDebugExtensionMockClass instance. The SourceDebugExtensionMockClass comes from a + * class file generated by a JSP to Java bytecode compiler. The testcase requests + * referenceTypeId for this class by VirtualMachine.ClassesBySignature command, then + * performs ReferenceType.SourceDebugExtension to get the JSR45 metadata for the + * class. The testcase checks that no any unexpected ERROR is returned and that + * the JSR45 metadata matches the expected value. + */ + public void testSourceDebugExtension001() { + doTest("testSourceDebugExtension001", + "Lorg/apache/harmony/jpda/tests/jdwp/Events/SourceDebugExtensionMockClass;", + JDWPConstants.Error.NONE); + } + + /** + * This testcase exercises ReferenceType.SourceDebugExtension command. + * + * The class queried is a primitive type which on ART does not + * have an associated DEX cache. + */ + public void testSourceDebugExtension002() { + doTest("testSourceDebugExtension001", "I", JDWPConstants.Error.ABSENT_INFORMATION); + } + + /** + * This testcase exercises ReferenceType.SourceDebugExtension command. + * + * The class queried is a primitive array which on ART does not + * have an associated DEX cache. + */ + public void testSourceDebugExtension003() { + doTest("testSourceDebugExtension003", "[I", JDWPConstants.Error.ABSENT_INFORMATION); + } + + /** + * This testcase exercises ReferenceType.SourceDebugExtension command. + * + * The class queried is an array which on ART does not have an + * associated DEX cache. + */ + public void testSourceDebugExtension004() { + doTest("testSourceDebugExtension004", "[Ljava/lang/String;", + JDWPConstants.Error.ABSENT_INFORMATION); + } + + /** + * This testcase exercises ReferenceType.SourceDebugExtension command. + * + * The test queries all classes to find a proxy class and then + * tries he SourceDebugExtension command on the proxy class. The + * debuggee instantiates a proxy so we know there is at least one. + */ + public void testSourceDebugExtension005() { + // Identifying the name of a proxy class is tricky so get all class names and walk them: + + logWriter.println("==> Send VirtualMachine::AllClasses command..."); + CommandPacket packet = new CommandPacket( + JDWPCommands.VirtualMachineCommandSet.CommandSetID, + JDWPCommands.VirtualMachineCommandSet.AllClassesCommand); + ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet); + checkReplyPacket(reply, "VirtualMachine::AllClasses command"); + + long typeID; + String signature; + int status; + int classes = reply.getNextValueAsInt(); + int count = 0; + for (int i = 0; i < classes; i++) { + reply.getNextValueAsByte(); + typeID = reply.getNextValueAsReferenceTypeID(); + signature = reply.getNextValueAsString(); + status = reply.getNextValueAsInt(); + if (signature.contains("$Proxy")) { + doTest("testSourceDebugExtension005", signature, + JDWPConstants.Error.ABSENT_INFORMATION); + return; + } + } + + logWriter.println("\n## FAILURE: testSourceDebugExtension005 did not find a proxy class"); + fail("testSourceDebugExtension005 did not find a proxy class"); } } diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/StackFrame/StackTrace002Debuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/StackFrame/StackTrace002Debuggee.java index f05d2c5..4a25285 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/StackFrame/StackTrace002Debuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/StackFrame/StackTrace002Debuggee.java @@ -24,6 +24,7 @@ import org.apache.harmony.jpda.tests.share.SyncDebuggee; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Arrays; /** * Debuggee for GetValues002Test and SetValues002Test. @@ -544,7 +545,7 @@ public class StackTrace002Debuggee extends SyncDebuggee { } public void breakpointArray(int[] param) { - logWriter.println("breakpointArray(param=\"" + param + "\")"); + logWriter.println("breakpointArray(param=\"" + Arrays.toString(param) + "\")"); synchronizeWithTest(); } |