summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-05-17 08:04:48 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-05-17 08:04:48 +0000
commit236ad19f28edd46387b31793117be6fda1e81bae (patch)
tree592db96c18ef81b49dc92aabaa2651835931d48c
parentf9b8b462042c49e0935675095f6f63de1f4af594 (diff)
parent0970614a69e214ea34cb896e4618526725e70690 (diff)
downloadapache-harmony-236ad19f28edd46387b31793117be6fda1e81bae.tar.gz
release-request-655284b0-7f0b-48b5-b01d-27f48a99f2c0-for-git_oc-mr1-release-4017105 snap-temp-L82600000064873863
Change-Id: I191efb638f509c0139f5a27ecc7c67c7a6393c86
-rw-r--r--jdwp/Android.mk1
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ArrayType/NewInstanceDebuggee.java4
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/GetValues003Debuggee.java6
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ObjectReference/SetValues004Debuggee.java10
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/GetValues005Debuggee.java6
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionDebuggee.java7
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/ReferenceType/SourceDebugExtensionTest.java116
-rw-r--r--jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/StackFrame/StackTrace002Debuggee.java3
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();
}