1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 /** 20 * @author Anatoly F. Bondarenko 21 */ 22 23 /** 24 * Created on 16.02.2005 25 */ 26 package org.apache.harmony.jpda.tests.jdwp.ReferenceType; 27 28 import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket; 29 import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands; 30 import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket; 31 import org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase; 32 import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 33 34 35 /** 36 * JDWP Unit test for ReferenceType.ClassLoader command. 37 */ 38 public class ClassLoaderTest extends JDWPSyncTestCase { 39 40 static final int testStatusPassed = 0; 41 static final int testStatusFailed = -1; 42 static final String thisCommandName = "ReferenceType.ClassLoader command"; 43 static final String debuggeeSignature = "Lorg/apache/harmony/jpda/tests/jdwp/share/debuggee/HelloWorld;"; 44 getDebuggeeClassName()45 protected String getDebuggeeClassName() { 46 return "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorld"; 47 } 48 49 /** 50 * This testcase exercises ReferenceType.ClassLoader command. 51 * <BR>The test starts HelloWorld debuggee, requests referenceTypeId 52 * for it by VirtualMachine.ClassesBySignature command, then 53 * performs ReferenceType.ClassLoader command and checks that command 54 * returns reply with some classLoaderID without any ERROR 55 */ testClassLoader001()56 public void testClassLoader001() { 57 String thisTestName = "testClassLoader001"; 58 logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": START..."); 59 synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); 60 61 long refTypeID = getClassIDBySignature(debuggeeSignature); 62 63 logWriter.println("=> Debuggee class = " + getDebuggeeClassName()); 64 logWriter.println("=> referenceTypeID for Debuggee class = " + refTypeID); 65 logWriter.println("=> CHECK1: send " + thisCommandName + " and check reply for ERROR..."); 66 67 CommandPacket classLoaderCommand = new CommandPacket( 68 JDWPCommands.ReferenceTypeCommandSet.CommandSetID, 69 JDWPCommands.ReferenceTypeCommandSet.ClassLoaderCommand); 70 classLoaderCommand.setNextValueAsReferenceTypeID(refTypeID); 71 72 ReplyPacket classLoaderReply = debuggeeWrapper.vmMirror.performCommand(classLoaderCommand); 73 classLoaderCommand = null; 74 checkReplyPacket(classLoaderReply, thisCommandName); 75 76 long returnedClassLoaderID = classLoaderReply.getNextValueAsObjectID(); 77 logWriter.println("=> CHECK1: PASSED: Returned classLoaderID = " + returnedClassLoaderID); 78 79 assertAllDataRead(classLoaderReply); 80 81 synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); 82 logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": FINISH"); 83 } 84 } 85