You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/11/28 18:49:31 UTC
svn commit: r480141 [23/38] - in
/harmony/enhanced/jdktools/trunk/modules/jpda: ./ doc/ doc/images/ make/
src/ src/common/ src/common/other/ src/common/other/jpda/
src/common/other/jpda/jdwp/ src/common/other/jpda/jdwp/agent/
src/common/other/jpda/jdwp...
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/ClassType/SuperClassTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/ClassType/SuperClassTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/ClassType/SuperClassTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/ClassType/SuperClassTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.5 $
+ */
+
+/**
+ * Created on 09.02.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.ClassType;
+
+import java.io.UnsupportedEncodingException;
+
+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.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP unit test for ClassType.SuperClass command.
+ * Contains three testcases: testSuperClass001, testSuperClass002, testSuperClass003.
+ */
+public class SuperClassTest extends JDWPClassTypeTestCase {
+
+ /**
+ * Starts this test by junit.textui.TestRunner.run() method.
+ */
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(SuperClassTest.class);
+ }
+
+ private ReplyPacket jdwpGetSuperClassReply(long classID, int errorExpected) {
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.ClassTypeCommandSet.CommandSetID,
+ JDWPCommands.ClassTypeCommandSet.SuperclassCommand);
+ packet.setNextValueAsClassID(classID);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
+ checkReplyPacket(reply, "ClassType.Superclass command", errorExpected);
+ return reply;
+ }
+
+ private void asserSuperClassReplyIsValid(ReplyPacket reply, String expectedSignature) {
+ assertTrue(reply.getErrorCode() == JDWPConstants.Error.NONE);
+ long superClassID = reply.getNextValueAsClassID();
+ logWriter.println("superClassID=" + superClassID);
+ if (superClassID == 0) {
+ // for superclass of Object expectedSignature is null
+ assertNull
+ ("ClassType::Superclass command returned invalid expectedSignature that must be null",
+ expectedSignature);
+ } else {
+ String signature = getClassSignature(superClassID);
+ logWriter.println("Signature: "+signature);
+ assertString("ClassType::Superclass command returned invalid signature,",
+ expectedSignature, signature);
+ }
+ }
+
+ /**
+ * This testcase exercises ClassType.Superclass command.
+ * <BR>Starts <A HREF="ClassTypeDebuggee.html">ClassTypeDebuggee</A>.
+ * <BR>Then does the following checks:
+ * <BR> - superclass for java.lang.String is java.lang.Object;
+ * <BR> - superclass for array of Objects is java.lang.Object;
+ * <BR> - superclass for primitive array is java.lang.Object;
+ * <BR> - superclass for <A HREF="ClassTypeDebuggee.html">ClassTypeDebuggee</A>
+ * class is <A HREF="../../share/SyncDebuggee.html">SyncDebuggee</A> class.;
+ */
+ public void testSuperClass001() throws UnsupportedEncodingException {
+ logWriter.println("testSuperClassTest001 started");
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ // check that superclass for java.lang.String is java.lang.Object
+ {
+ // test with String[] class
+ long classID = getClassIDBySignature("Ljava/lang/String;");
+
+ ReplyPacket reply = jdwpGetSuperClassReply(classID, JDWPConstants.Error.NONE);
+ // complare returned signature with superclass signature
+ asserSuperClassReplyIsValid(reply, "Ljava/lang/Object;");
+ }
+
+ // check that superclass for array is java.lang.Object
+ {
+ // test with String[] class
+ long classID = getClassIDBySignature("[Ljava/lang/String;");
+
+ ReplyPacket reply = jdwpGetSuperClassReply(classID, JDWPConstants.Error.NONE);
+ // complare returned signature with superclass signature
+ asserSuperClassReplyIsValid(reply, "Ljava/lang/Object;");
+ }
+
+ // check that superclass for primitive array is java.lang.Object
+ {
+ // test with int[] class
+ long classID = getClassIDBySignature("[I");
+
+ ReplyPacket reply = jdwpGetSuperClassReply(classID, JDWPConstants.Error.NONE);
+ // complare returned signature with superclass signature
+ asserSuperClassReplyIsValid(reply, "Ljava/lang/Object;");
+ }
+
+ // check that superclass for Debuggee is SyncDebuggee
+ {
+ long classID = getClassIDBySignature(getDebuggeeSignature());
+
+ ReplyPacket reply = jdwpGetSuperClassReply(classID, JDWPConstants.Error.NONE);
+ // complare returned signature with superclass signature
+ asserSuperClassReplyIsValid(reply, "Lorg/apache/harmony/jpda/tests/share/SyncDebuggee;");
+ }
+
+ // check that there is no superclass for java.lang.Object
+ {
+ // test with java.lang.Object class
+ long classID = getClassIDBySignature("Ljava/lang/Object;");
+
+ ReplyPacket reply = jdwpGetSuperClassReply(classID, JDWPConstants.Error.NONE);
+ // complare returned signature with superclass signature
+ // (expects null for this case)
+ asserSuperClassReplyIsValid(reply, null);
+ }
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ }
+
+ /**
+ * This testcase exercises ClassType.Superclass command.
+ * <BR>Starts <A HREF="ClassTypeDebuggee.html">ClassTypeDebuggee</A>.
+ * <BR>Then does the following checks:
+ * <BR> - there is no superclass for interface;
+ * <BR> - INVALID_OBJECT is returned if classID is non-existent;
+ * <BR> - INVALID_OBJECT is returned if instead of classID FieldID is passed;
+ */
+ public void testSuperClass002() throws UnsupportedEncodingException {
+ logWriter.println("testSuperClassTest002 started");
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ // check that there is no superclass for interface objects
+ {
+ long interfaceID = getClassIDBySignature("Ljava/lang/Cloneable;");
+
+ ReplyPacket reply = jdwpGetSuperClassReply(interfaceID, JDWPConstants.Error.NONE);
+ // compare returned signature with superclass signature
+ // (null for interfaces)
+ asserSuperClassReplyIsValid(reply, null);
+ }
+
+ // check that INVALID_OBJECT returns if classID is non-existent
+ {
+ jdwpGetSuperClassReply(10000
+ , JDWPConstants.Error.INVALID_OBJECT);
+ }
+
+ // check that reply error code is INVALID_OBJECT for a FieldID Out Data
+ {
+ long classID = getClassIDBySignature(getDebuggeeSignature());
+
+ FieldInfo[] fields = jdwpGetFields(classID);
+ // assert stringID is not null
+ assertTrue("Invalid fields.length: 0", fields.length > 0);
+ // test with the first field
+
+ jdwpGetSuperClassReply(fields[0].getFieldID()
+ , JDWPConstants.Error.INVALID_OBJECT);
+ }
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ }
+
+ /**
+ * This testcase exercises ClassType.Superclass command.
+ * <BR>Starts <A HREF="ClassTypeDebuggee.html">ClassTypeDebuggee</A>.
+ * <BR>Then does the following check:
+ * <BR> - INVALID_CLASS is returned if instead of classID ObjectID is passed;
+ */
+ public void testSuperClass003() throws UnsupportedEncodingException {
+ logWriter.println("testSuperClassTest003 started");
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ // check that reply error code is INVALID_CLASS for a StringID Out Data
+ {
+ long stringID = createString("Some test string");
+ // assert stringID is not null
+ assertFalse("Invalid stringID: 0", stringID == 0);
+ jdwpGetSuperClassReply(stringID, JDWPConstants.Error.INVALID_CLASS);
+ }
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ }
+}
\ No newline at end of file
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/ClassType/SuperClassTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 07.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+;
+
+/**
+ * Debuggee for BreakpointTest unit test.
+ */
+public class BreakpointDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(BreakpointDebuggee.class);
+ }
+
+ public void breakpointTest() {
+ logWriter.println("breakpointTest");
+ }
+
+ public void run() {
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("BreakpointDebuggee started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ // Test breakpoint
+ breakpointTest();
+
+ logWriter.println("BreakpointDebuggee finished");
+ }
+
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 11.03.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.Breakpoint;
+import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP Unit test for BREAKPOINT event.
+ */
+public class BreakpointTest extends JDWPEventTestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(BreakpointTest.class);
+ }
+
+ protected String getDebuggeeClassName() {
+ return BreakpointDebuggee.class.getName();
+ }
+
+ /**
+ * This testcase is for BREAKPOINT event.
+ * <BR>It runs BreakpointDebuggee and set breakpoint to its breakpointTest
+ * method, then verifies that requested BREAKPOINT event occurs.
+ */
+ public void testSetBreakpointEvent() {
+ logWriter.println("testSetBreakpointEvent started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ Breakpoint breakpoint = new Breakpoint("Lorg/apache/harmony/jpda/tests/jdwp/Events/BreakpointDebuggee;", "breakpointTest", 1);
+ ReplyPacket reply;
+ reply = debuggeeWrapper.vmMirror.setBreakpoint(JDWPConstants.TypeTag.CLASS, breakpoint);
+ checkReplyPacket(reply, "Set BREAKPOINT event");
+
+ logWriter.println("starting thread");
+
+ // execute the breakpoint
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ CommandPacket event = null;
+ event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.BREAKPOINT,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.BREAKPOINT),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ logWriter.println("BreakpointTest done");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/BreakpointTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 06.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.LogWriter;
+
+/**
+ * Internal class used in ClassPrepareTest
+ */
+class Class2Prepare {
+
+ public Class2Prepare(LogWriter logWriter) {
+ super();
+ logWriter.println("Class2Prepare default constructor is called");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 07.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Debuggee for ClassPrepareTest unit test.
+ * Loads Class2Prepare class to trace CLASS_PREPARE event.
+ */
+public class ClassPrepareDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(ClassPrepareDebuggee.class);
+ }
+
+ public void run() {
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("ClassPrepareDebuggee started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ try {
+ // Test class prepare
+ logWriter.println("Try to load and prepare class Class2Prepare");
+ Class.forName("org.apache.harmony.jpda.tests.jdwp.Events.Class2Prepare");
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ logWriter.println("ClassPrepareDebuggee finished");
+ }
+
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 06.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP Unit test for CLASS_PREPARE event.
+ */
+public class ClassPrepareTest extends JDWPEventTestCase {
+
+ protected String getDebuggeeClassName() {
+ return ClassPrepareDebuggee.class.getName();
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(ClassPrepareTest.class);
+ }
+
+ /**
+ * This testcase is for CLASS_PREPARE event.
+ * <BR>It runs ClassPrepareDebuggee to load Class2Prepare class
+ * and verify that requested CLASS_PREPARE event occurs.
+ */
+ public void testClassPrepareEvent() {
+ logWriter.println("testClassPrepareEvent started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ String class2prepareRegexp = "org.apache.harmony.jpda.tests.jdwp.Events.Class2Prepare";
+ String class2prepareSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/Class2Prepare;";
+
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setClassPrepared(class2prepareRegexp);
+ checkReplyPacket(reply, "Set CLASS_PREPARE event");
+
+ // start loading Class2Prepare class
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ CommandPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,", JDWPConstants.EventKind.CLASS_PREPARE, parsedEvents[0].getEventKind()
+ , JDWPConstants.EventKind.getName(JDWPConstants.EventKind.CLASS_PREPARE)
+ , JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+ assertEquals("Invalid signature of prepared class,", class2prepareSignature
+ , ((ParsedEvent.Event_CLASS_PREPARE)parsedEvents[0]).getSignature());
+
+ //logWriter.println("parsedEvent="+parsedEvents[0].getClass().getCanonicalName());
+ //logWriter.println(((ParsedEvent.Event_CLASS_PREPARE)parsedEvents[0]).getSignature());
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ClassPrepareTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.3 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+/**
+ * Internal exception used in ExceptionTest
+ */
+public class DebuggeeException extends RuntimeException {
+
+ /**
+ * Serialization id.
+ */
+ private static final long serialVersionUID = 2849656331214873095L;
+
+ public DebuggeeException(String arg0) {
+ super(arg0);
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/EventDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/EventDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/EventDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/EventDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 11.03.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Basic debuggee for events unit tests.
+ * Runs new thread
+ */
+public class EventDebuggee extends SyncDebuggee {
+
+ public static final String testedThreadName = "SimpleThread";
+
+ private class SimpleThread extends Thread {
+
+ public SimpleThread () {
+ super(testedThreadName);
+ }
+
+ public void run() {
+ logWriter.println("-> SimpleThread: Running...");
+ }
+ }
+
+ public static void main(String[] args) {
+ runDebuggee(EventDebuggee.class);
+ }
+
+ public void run() {
+ logWriter.println("-> EventDebuggee: STARTED");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ SimpleThread testThread = new SimpleThread();
+ testThread.start();
+ logWriter.println("-> EventDebuggee: SimpleThread started");
+ try {
+ testThread.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ logWriter.println("-> EventDebuggee: SimpleThread finished");
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("-> EventDebuggee: wait for signal to continue...");
+ // do NOT finish without signal (in acceptable time) in order
+ // to do NOT generate unexpected events
+ String infoMessage = "-> EventDebuggee: TIMED OUT in waiting for signal!";
+ for (int i=0; i < 10; i++ ) {
+ if ( synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE) ) {
+ infoMessage = "-> EventDebuggee: signal received!";
+ break;
+ }
+ }
+ logWriter.println(infoMessage);
+
+ logWriter.println("-> EventDebuggee: FINISH...");
+ }
+
+}
+
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/EventDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Debuggee for ExceptionTest unit test.
+ * Generates caught DebuggeeException exception.
+ */
+public class ExceptionDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(ExceptionDebuggee.class);
+ }
+
+ public void run(){
+
+ logWriter.println("-- ExceptionDebuggee: STARTED");
+ // load and prepare DebuggeeException class
+ DebuggeeException ex = new DebuggeeException("dummy exception");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("-- ExceptionDebuggee: Wait for SGNL_CONTINUE...");
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ logWriter.println("-- ExceptionDebuggee: SGNL_CONTINUE has been received!");
+
+ try {
+ // throw caught exception
+ throw new DebuggeeException("Caught debuggee exception");
+ } catch (DebuggeeException e) {
+ logWriter.println("-- ExceptionDebuggee: Exception: \""+e.getMessage()+"\" was thrown");
+ }
+
+ logWriter.println("DUMP{" + ex + "}");
+ logWriter.println("-- ExceptionDebuggee: FINISHing...");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.EventPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP Unit test for caught EXCEPTION event.
+ */
+public class ExceptionTest extends JDWPEventTestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(ExceptionTest.class);
+ }
+
+ protected String getDebuggeeClassName() {
+ return ExceptionDebuggee.class.getName();
+ }
+
+ /**
+ * This testcase is for caught EXCEPTION event.
+ * <BR>It runs ExceptionDebuggee that throws caught DebuggeeException
+ * and verify that requested EXCEPTION event occurs.
+ */
+ public void testExceptionEvent() {
+ logWriter.println(">> testExceptionEvent: STARTED...");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ String exceptionSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/DebuggeeException;";
+ boolean isCatch = true;
+ boolean isUncatch = true;
+ logWriter.println("\n>> testExceptionEvent: => setException(...)...");
+ debuggeeWrapper.vmMirror.setException(exceptionSignature, isCatch, isUncatch);
+ logWriter.println(">> testExceptionEvent: setException(...) DONE");
+
+ logWriter.println("\n>> testExceptionEvent: send to Debuggee SGNL_CONTINUE...");
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ logWriter.println("\n>> testExceptionEvent: => receiveEvent()...");
+ EventPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ logWriter.println(">> testExceptionEvent: Event is received! Check it ...");
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ // assert that event is the expected one
+ logWriter.println(">> testExceptionEvent: parsedEvents.length = " + parsedEvents.length);
+ logWriter.println(">> testExceptionEvent: parsedEvents[0].getEventKind() = " + parsedEvents[0].getEventKind());
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.EXCEPTION,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.EXCEPTION),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+ TaggedObject returnedException =((ParsedEvent.Event_EXCEPTION)parsedEvents[0]).getException();
+
+ // assert that exception class is the expected one
+ long typeID = getObjectReferenceType(returnedException.objectID);
+ String returnedExceptionSignature = getClassSignature(typeID);
+ logWriter.println(">> testExceptionEvent: returnedExceptionSignature = |" + returnedExceptionSignature+"|");
+ assertString("Invalid signature of returned exception,", exceptionSignature, returnedExceptionSignature);
+
+ // resume debuggee
+ logWriter.println("\n>> testExceptionEvent: resume debuggee...");
+ debuggeeWrapper.vmMirror.resume();
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/ExceptionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldAccessTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldAccessTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldAccessTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldAccessTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.6 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.EventPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+/**
+ * JDWP Unit test for FIELD_ACCESS event.
+ */
+public class FieldAccessTest extends JDWPEventTestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(FieldAccessTest.class);
+ }
+
+ protected String getDebuggeeClassName() {
+ return FieldDebuggee.class.getName();
+ }
+
+ /**
+ * This testcase is for FIELD_ACCESS event.
+ * <BR>It runs FieldDebuggee that accesses to the value of its internal field
+ * and verify that requested FIELD_ACCESS event occurs.
+ */
+ public void testFieldAccessEvent() {
+
+ logWriter.println("ExceptionTest started");
+
+ //check capability, relevant for this test
+ logWriter.println("=> Check capability: canWatchFieldAccess");
+ debuggeeWrapper.vmMirror.capabilities();
+ boolean isCapability = debuggeeWrapper.vmMirror.targetVMCapabilities.canWatchFieldAccess;
+ if (!isCapability) {
+ logWriter.println("##WARNING: this VM doesn't possess capability: canWatchFieldAccess");
+ return;
+ }
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ String classSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee;";
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setFieldAccess(classSignature, JDWPConstants.TypeTag.CLASS, "testIntField");
+ checkReplyPacket(reply, "Set FIELD_ACCESS event");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ EventPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ // assert that event is the expected one
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.FIELD_ACCESS,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.FIELD_ACCESS),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ TaggedObject accessedField =((ParsedEvent.Event_FIELD_ACCESS)parsedEvents[0]).getObject();
+
+ // assert that exception class is the expected one
+ long typeID = getObjectReferenceType(accessedField.objectID);
+ String returnedExceptionSignature = getClassSignature(typeID);
+ assertString("Invalid class signature,",
+ classSignature, returnedExceptionSignature);
+
+ logWriter.println("FieldAccessTest done");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldAccessTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Debuggee for FieldAccessTest and FieldModified unit tests.
+ * Provides access and modification of testIntField field.
+ */
+public class FieldDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(FieldDebuggee.class);
+ }
+
+ private int testIntField = 0;
+
+ public void run(){
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("FieldDebuggee started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ testIntField = 512;
+ logWriter.println("Access to field testIntField: value="+testIntField);
+
+ logWriter.println("FieldDebuggee finished");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Debuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Debuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Debuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Debuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.3 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import java.io.File;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Debuggee for FieldAccessTest and FieldModified unit tests.
+ * Provides access and modification of testIntField field.
+ */
+public class FieldModification002Debuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(FieldModification002Debuggee.class);
+ }
+
+ public boolean testBoolField = false;
+ public byte testByteField = 0;
+ public char testCharField = 0;
+ public short testShortField = 0;
+ public int testIntField = 0;
+ public long testLongField = 0;
+ public float testFloatField = 0;
+ public double testDoubleField = 0;
+ public Object testObjectField = null;
+ public Object testThreadField = null;
+ public Object testThreadGroupField = null;
+ public Object testClassField = null;
+ public Object testClassLoaderField = null;
+ public Object testStringField = null;
+ public int [] testIntArrayField = null;
+ public String [] testStringArrayField = null;
+ public Object [] testObjectArrayField = null;
+
+ /**
+ * This debuggee accesses all class fields and synchronizes with debugger.
+ */
+ public void run() {
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+ logWriter.println("FieldDebuggee started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testBoolField = true;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testByteField = 'k';
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testCharField = 'Q';
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testShortField = 127;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testIntField = -1001;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testLongField = 4000000000000000L;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testFloatField = 100*100*100;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testDoubleField = -1.1/100000.999999;
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testObjectField = new File("none");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testThreadField = new Thread("myThread001");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testThreadGroupField = new ThreadGroup("MyThreadGroup_000001");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testClassField = System.out.getClass();
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testClassLoaderField = this.getClass().getClassLoader();
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testStringField = "String=Strong=Strung";
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testIntArrayField = new int [] { 1, 2, 3, };
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testStringArrayField = new String[] { "abc", "xyz", };
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ testObjectArrayField = new Object[] { null, null, null, new Long(99), "objobjobj", };
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+ logWriter.println("FieldDebuggee finished");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Debuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Test.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Test.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Test.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Ruslan A. Scherbakov
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 14.06.2006
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.EventPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
+import org.apache.harmony.jpda.tests.framework.jdwp.Value;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+/**
+ * JDWP Unit test for FIELD_MODIFICATION event.
+ */
+public class FieldModification002Test extends JDWPEventTestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(FieldModification002Test.class);
+ }
+
+ protected String getDebuggeeClassName() {
+ return FieldModification002Debuggee.class.getName();
+ }
+
+ /**
+ * This testcase is for FIELD_MODIFICATION event.
+ * <BR>It FieldModification002Debuggee that modifies the value of its own fields
+ * and verifies that requested FIELD_MODIFICATION events occur and
+ * correct type tag is returned for each event.
+ */
+ public void testFieldModifyEvent() {
+
+ logWriter.println("FieldModification002Test started");
+
+ //check capability, relevant for this test
+ logWriter.println("=> Check capability: canWatchFieldModification");
+ debuggeeWrapper.vmMirror.capabilities();
+ boolean isCapability = debuggeeWrapper.vmMirror.targetVMCapabilities.canWatchFieldModification;
+ if (!isCapability) {
+ logWriter.println("##WARNING: this VM doesn't possess capability: canWatchFieldModification");
+ return;
+ }
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+ String classSignature = "L" + getDebuggeeClassName().replace('.', '/') + ";";
+
+ hookFieldModification(classSignature, "testBoolField", JDWPConstants.Tag.BOOLEAN_TAG);
+ hookFieldModification(classSignature, "testByteField", JDWPConstants.Tag.BYTE_TAG);
+ hookFieldModification(classSignature, "testCharField", JDWPConstants.Tag.CHAR_TAG);
+ hookFieldModification(classSignature, "testShortField", JDWPConstants.Tag.SHORT_TAG);
+ hookFieldModification(classSignature, "testIntField", JDWPConstants.Tag.INT_TAG);
+ hookFieldModification(classSignature, "testLongField", JDWPConstants.Tag.LONG_TAG);
+ hookFieldModification(classSignature, "testFloatField", JDWPConstants.Tag.FLOAT_TAG);
+ hookFieldModification(classSignature, "testDoubleField", JDWPConstants.Tag.DOUBLE_TAG);
+ hookFieldModification(classSignature, "testObjectField", JDWPConstants.Tag.OBJECT_TAG);
+ hookFieldModification(classSignature, "testThreadField", JDWPConstants.Tag.THREAD_TAG);
+ hookFieldModification(classSignature, "testThreadGroupField", JDWPConstants.Tag.THREAD_GROUP_TAG);
+ hookFieldModification(classSignature, "testClassField", JDWPConstants.Tag.CLASS_OBJECT_TAG);
+ hookFieldModification(classSignature, "testClassLoaderField", JDWPConstants.Tag.CLASS_LOADER_TAG);
+ hookFieldModification(classSignature, "testStringField", JDWPConstants.Tag.STRING_TAG);
+ hookFieldModification(classSignature, "testIntArrayField", JDWPConstants.Tag.ARRAY_TAG);
+ hookFieldModification(classSignature, "testStringArrayField", JDWPConstants.Tag.ARRAY_TAG);
+ hookFieldModification(classSignature, "testObjectArrayField", JDWPConstants.Tag.ARRAY_TAG);
+
+ logWriter.println("FieldModification002Test done");
+ }
+
+ /**
+ * Sets FIELD_MODIFICATION breakpoint,
+ * synchrinizes debuggee,
+ * expects field notification event,
+ * verifies new value assigned to the field
+ * and clears set breakpoint.
+ *
+ * @param classSignature signature of class containing the given field
+ * @param fieldName the name of field to break on modification
+ * @param expectedTag expected type tag of new values assigned to the field
+ */
+ public void hookFieldModification(String classSignature, String fieldName, byte expectedTag) {
+
+ // set breakpoint
+ logWriter.println("Set hook for: " + fieldName);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setFieldModification(classSignature, JDWPConstants.TypeTag.CLASS, fieldName);
+ checkReplyPacket(reply, "Set FIELD_MODIFICATION event");
+ int requestID = reply.getNextValueAsInt();
+ assertAllDataRead(reply);
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ EventPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ // assert that event is the expected one
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.FIELD_MODIFICATION,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.FIELD_MODIFICATION),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ Value value =
+ ((ParsedEvent.Event_FIELD_MODIFICATION)parsedEvents[0]).getValueToBe();
+ byte tag = value.getTag();
+ assertEquals("Invalid value tag,",
+ expectedTag,
+ tag,
+ JDWPConstants.Tag.getName(expectedTag),
+ JDWPConstants.Tag.getName(tag));
+
+ TaggedObject modifiedField =
+ ((ParsedEvent.Event_FIELD_MODIFICATION)parsedEvents[0]).getObject();
+
+ // assert that exception class is the expected one
+ long typeID = getObjectReferenceType(modifiedField.objectID);
+ String returnedExceptionSignature = getClassSignature(typeID);
+ assertString("Invalid class signature,",
+ classSignature, returnedExceptionSignature);
+
+ logWriter.println("Field: " + fieldName +
+ ", tag of new value: " + value +
+ ", tag: " + (char)tag+ " - OK");
+
+ // clear breakpoint
+ clearEvent(JDWPConstants.EventKind.FIELD_MODIFICATION, requestID, false);
+
+ // and resume target VM
+ resumeDebuggee();
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModification002Test.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModificationTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModificationTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModificationTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModificationTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 11.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.EventPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+/**
+ * JDWP Unit test for FIELD_MODIFICATION event.
+ */
+public class FieldModificationTest extends JDWPEventTestCase {
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(FieldModificationTest.class);
+ }
+
+ protected String getDebuggeeClassName() {
+ return FieldDebuggee.class.getName();
+ }
+
+ /**
+ * This testcase is for FIELD_MODIFICATION event.
+ * <BR>It runs FieldDebuggee that modifies the value of its own field
+ * and verify that requested FIELD_MODIFICATION event occurs.
+ */
+ public void testFieldModifyEvent() {
+
+ logWriter.println("FieldModificationTest started");
+
+ //check capability, relevant for this test
+ logWriter.println("=> Check capability: canWatchFieldModification");
+ debuggeeWrapper.vmMirror.capabilities();
+ boolean isCapability = debuggeeWrapper.vmMirror.targetVMCapabilities.canWatchFieldModification;
+ if (!isCapability) {
+ logWriter.println("##WARNING: this VM doesn't possess capability: canWatchFieldModification");
+ return;
+ }
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ String classSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/FieldDebuggee;";
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setFieldModification(classSignature, JDWPConstants.TypeTag.CLASS, "testIntField");
+ checkReplyPacket(reply, "Set FIELD_MODIFICATION event");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ EventPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ // assert that event is the expected one
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.FIELD_MODIFICATION,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.FIELD_MODIFICATION),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ TaggedObject modifiedField =((ParsedEvent.Event_FIELD_MODIFICATION)parsedEvents[0]).getObject();
+
+ // assert that exception class is the expected one
+ long typeID = getObjectReferenceType(modifiedField.objectID);
+ String returnedExceptionSignature = getClassSignature(typeID);
+ assertString("Invalid class signature,",
+ classSignature, returnedExceptionSignature);
+
+ logWriter.println("FieldModificationTest done");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/FieldModificationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/JDWPEventTestCase.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/JDWPEventTestCase.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/JDWPEventTestCase.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/JDWPEventTestCase.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 11.03.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase;
+
+/**
+ * Internal class that extends functionality of JDWPSyncTestCase class.
+ */
+class JDWPEventTestCase extends JDWPSyncTestCase {
+
+ protected String getDebuggeeClassName() {
+ return EventDebuggee.class.getName();
+ }
+
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/JDWPEventTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.2 $
+ */
+
+/**
+ * Created on 06.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+
+/**
+ * Debuggee for MethodEntryTest unit tests.
+ * Calls it's own sampleMethod method.
+ */
+public class MethodEntryDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(MethodEntryDebuggee.class);
+ }
+
+ public void sampleMethod() {
+ logWriter.println("sampleMethod() is called");
+ }
+
+ public void run() {
+ logWriter.println("MethodEntryDebuggee started");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ sampleMethod();
+
+ logWriter.println("MethodEntryDebuggee finished");
+ }
+
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 06.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP Unit test for METHOD_ENTRY event.
+ */
+public class MethodEntryTest extends JDWPEventTestCase {
+
+ protected String getDebuggeeClassName() {
+ return MethodEntryDebuggee.class.getName();
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(MethodEntryTest.class);
+ }
+
+ /**
+ * This testcase is for METHOD_ENTRY event.
+ * <BR>It runs MethodEntryDebuggee that executed its own method
+ * and verify that requested METHOD_ENTRY event occurs.
+ */
+ public void testMethodEntry() {
+ logWriter.println("testMethodEntry started");
+
+ String methodEntryClassNameRegexp = "org.apache.harmony.jpda.tests.jdwp.Events.MethodEntryDebuggee";
+ //String methodEntryClassNameSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee;";
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setMethodEntry(methodEntryClassNameRegexp);
+ checkReplyPacket(reply, "Set METHOD_ENTRY event");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ CommandPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.METHOD_ENTRY,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.METHOD_ENTRY),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ logWriter.println("MethodEntryTest done");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodEntryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodExitTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodExitTest.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodExitTest.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodExitTest.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Anton V. Karnachuk
+ * @version $Revision: 1.4 $
+ */
+
+/**
+ * Created on 07.04.2005
+ */
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+
+
+
+/**
+ * JDWP Unit test for METHOD_EXIT event.
+ */
+public class MethodExitTest extends JDWPEventTestCase {
+
+ protected String getDebuggeeClassName() {
+ return MethodEntryDebuggee.class.getName();
+ }
+
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(MethodExitTest.class);
+ }
+
+ /**
+ * This testcase is for METHOD_EXIT event.
+ * <BR>It runs MethodEntryDebuggee that executed its own method
+ * and verify that requested METHOD_EXIT event occurs.
+ */
+ public void testMethodExit() {
+ logWriter.println("testMethodExit started");
+
+ String methodExitClassNameRegexp = "org.apache.harmony.jpda.tests.jdwp.Events.MethodEntryDebuggee";
+ //String methodExitClassNameSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/MethodEntryDebuggee;";
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ ReplyPacket reply = debuggeeWrapper.vmMirror.setMethodExit(methodExitClassNameRegexp);
+ checkReplyPacket(reply, "Set METHOD_EXIT event");
+
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ CommandPacket event = debuggeeWrapper.vmMirror.receiveEvent();
+ ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(event);
+
+ assertEquals("Invalid number of events,", 1, parsedEvents.length);
+ assertEquals("Invalid event kind,",
+ JDWPConstants.EventKind.METHOD_EXIT,
+ parsedEvents[0].getEventKind(),
+ JDWPConstants.EventKind.getName(JDWPConstants.EventKind.METHOD_EXIT),
+ JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind()));
+
+ logWriter.println("MethodExitTest done");
+ }
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/MethodExitTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/SingleStepDebuggee.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/SingleStepDebuggee.java?view=auto&rev=480141
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/SingleStepDebuggee.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/SingleStepDebuggee.java Tue Nov 28 09:49:08 2006
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Aleksander V. Budniy
+ * @version $Revision: 1.3 $
+ */
+
+/**
+ * Created on 14.07.2005
+ */
+
+package org.apache.harmony.jpda.tests.jdwp.Events;
+
+import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
+import org.apache.harmony.jpda.tests.share.SyncDebuggee;
+;
+
+/**
+ * Debuggee for SingleStepTest unit test.
+ */
+public class SingleStepDebuggee extends SyncDebuggee {
+
+ public static void main(String[] args) {
+ runDebuggee(SingleStepDebuggee.class);
+ }
+
+ public void breakpointTest() {
+ logWriter.println("Line1");
+ logWriter.println("Line2");
+ logWriter.println("Line3");
+ }
+
+ public void run() {
+ synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
+
+ logWriter.println("SingleStepDebuggee started");
+
+ synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
+
+ // Test breakpoint
+ breakpointTest();
+
+ logWriter.println("SingleStepDebuggee finished");
+ }
+
+}
Propchange: harmony/enhanced/jdktools/trunk/modules/jpda/test/common/unit/org/apache/harmony/jpda/tests/jdwp/Events/SingleStepDebuggee.java
------------------------------------------------------------------------------
svn:eol-style = native