1ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz/* 2ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * Licensed to the Apache Software Foundation (ASF) under one or more 3ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * contributor license agreements. See the NOTICE file distributed with 4ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * this work for additional information regarding copyright ownership. 5ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * The ASF licenses this file to You under the Apache License, Version 2.0 6ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * (the "License"); you may not use this file except in compliance with 7ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * the License. You may obtain a copy of the License at 8ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * 9ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * http://www.apache.org/licenses/LICENSE-2.0 10ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * 11ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * Unless required by applicable law or agreed to in writing, software 12ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * distributed under the License is distributed on an "AS IS" BASIS, 13ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * 15ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * See the License for the specific language governing permissions and 16ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * limitations under the License. 17ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz */ 18ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 19ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzpackage org.apache.harmony.jpda.tests.jdwp.ClassType; 20ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 21ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket; 22ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands; 23ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants; 24ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket; 25ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject; 26ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzimport org.apache.harmony.jpda.tests.jdwp.share.JDWPInvokeMethodSuspendedTwiceTestCase; 27ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 28ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz/** 29ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * JDWP unit test for ClassType.NewInstance command with thread suspended more than once before the 30ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz * invoke. 31ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz */ 32ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertzpublic class NewInstanceAfterMultipleThreadSuspensionTest 33ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz extends JDWPInvokeMethodSuspendedTwiceTestCase { 34ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz public void testInvokeWithMultipleEvents001() { 35ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz runInvokeMethodTest("<init>"); 36ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz } 37ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 38ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz @Override 39ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz protected CommandPacket buildInvokeCommand(long threadId, long classID, 40ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz long methodId, int invoke_options) { 41ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz CommandPacket command = new CommandPacket( 42ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz JDWPCommands.ClassTypeCommandSet.CommandSetID, 43ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz JDWPCommands.ClassTypeCommandSet.NewInstanceCommand); 44ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz command.setNextValueAsClassID(classID); 45ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz command.setNextValueAsThreadID(threadId); 46ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz command.setNextValueAsMethodID(methodId); 47ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz command.setNextValueAsInt(0); 48ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz command.setNextValueAsInt(invoke_options); 49ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz return command; 50ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz } 51ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 52ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz @Override 53ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz protected String getInvokeCommandName() { 54ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz return "ClassType.NewInstance"; 55ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz } 56ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 57ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz @Override 58ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz protected void checkInvokeReply(ReplyPacket reply) { 59ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz // Check result is an object. 60ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz TaggedObject invokeNewObject = reply.getNextValueAsTaggedObject(); 61ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz assertEquals(JDWPConstants.Tag.OBJECT_TAG, invokeNewObject.tag); 62ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz assertTrue("Invalid exception object id", invokeNewObject.objectID != 0); 63ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 64ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz // Check exception is null. 65ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz TaggedObject invokeException = reply.getNextValueAsTaggedObject(); 66ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz assertEquals(JDWPConstants.Tag.OBJECT_TAG, invokeException.tag); 67ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz assertEquals("Invalid exception object id", 0, invokeException.objectID); 68ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 69ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz assertAllDataRead(reply); 70ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz } 71ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz 72ec561efd83dc4bb97a5677a28f09a7fc41deea79Sebastien Hertz} 73