IsCollectedTest.java revision 5f0a23683aa603d8c50b6dd071a565821b76067b
15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/*
25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements.  See the NOTICE file distributed with
45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership.
55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with
75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License.  You may obtain a copy of the License at
85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  Unless required by applicable law or agreed to in writing, software
125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  See the License for the specific language governing permissions and
165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  limitations under the License.
175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Anatoly F. Bondarenko
215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 05.03.2005
255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.jdwp.ObjectReference;
275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands;
305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.Value;
335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase;
345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * JDWP Unit test for ObjectReference.IsCollected command.
395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class IsCollectedTest extends JDWPSyncTestCase {
415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final String thisCommandName = "ObjectReference.IsCollected command";
435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final String debuggeeSignature = "Lorg/apache/harmony/jpda/tests/jdwp/ObjectReference/IsCollectedDebuggee;";
455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    protected String getDebuggeeClassName() {
475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return "org.apache.harmony.jpda.tests.jdwp.ObjectReference.IsCollectedDebuggee";
485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * This test exercises ObjectReference.IsCollected command.
525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>The test starts IsCollectedDebuggee class, gets two
535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * objectIDs as value of static fields of this class which (fields)
545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * represent two checked objects. Then for the first objectID test executes
555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * ObjectReference.DisableCollection command. After that Debuggee tries to
565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * unload checked objects. Then the test executes
575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * ObjectReference.IsCollected commands for both checked objects and checks
585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * replies.
595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public void testIsCollected001() {
615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String thisTestName = "testIsCollected001";
625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("==> " + thisTestName + " for " + thisCommandName
635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + ": START...");
645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String failMessage = "";
655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        finalSyncMessage = "TO_FINISH";
675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long refTypeID = getClassIDBySignature(debuggeeSignature);
695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Debuggee class = " + getDebuggeeClassName());
715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> referenceTypeID for Debuggee class = "
725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + refTypeID);
735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String checkedFieldNames[] = { "checkedObject_01", "checkedObject_02", };
755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long checkedFieldIDs[] = checkFields(refTypeID, checkedFieldNames);
765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long checkedField_01ID = checkedFieldIDs[0];
775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long checkedField_02ID = checkedFieldIDs[1];
785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter
805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .println("=> Send ReferenceType::GetValues command for received fieldIDs and get ObjectIDs to check...");
815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        CommandPacket getValuesCommand = new CommandPacket(
835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ReferenceTypeCommandSet.GetValuesCommand);
855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        getValuesCommand.setNextValueAsReferenceTypeID(refTypeID);
865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        getValuesCommand.setNextValueAsInt(2);
875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        getValuesCommand.setNextValueAsFieldID(checkedField_01ID);
885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        getValuesCommand.setNextValueAsFieldID(checkedField_02ID);
895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        ReplyPacket getValuesReply = debuggeeWrapper.vmMirror
915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .performCommand(getValuesCommand);
925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        getValuesCommand = null;
935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkReplyPacket(getValuesReply, "ReferenceType::GetValues command");
945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int returnedValuesNumber = getValuesReply.getNextValueAsInt();
965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter
975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .println("=> Returned values number = " + returnedValuesNumber);
985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        assertEquals("Invalid number of values,", 2, returnedValuesNumber);
995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        Value checkedObjectFieldValue = getValuesReply.getNextValueAsValue();
1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        byte checkedObjectFieldTag = checkedObjectFieldValue.getTag();
1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Returned field value tag for checkedObject_01 = "
1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObjectFieldTag + "("
1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + JDWPConstants.Tag.getName(checkedObjectFieldTag) + ")");
1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        assertEquals("Invalid value tag for checkedObject_01",
1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.OBJECT_TAG, checkedObjectFieldTag,
1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.getName(JDWPConstants.Tag.OBJECT_TAG),
1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.getName(checkedObjectFieldTag));
1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long checkedObject_01ID = checkedObjectFieldValue.getLongValue();
1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Returned ObjectID for checkedObject_01 = "
1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObject_01ID);
1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedObjectFieldValue = getValuesReply.getNextValueAsValue();
1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedObjectFieldTag = checkedObjectFieldValue.getTag();
1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Returned field value tag for checkedObject_02 = "
1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObjectFieldTag + "("
1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + JDWPConstants.Tag.getName(checkedObjectFieldTag) + ")");
1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        assertEquals("Invalid value tag for checkedObject_02",
1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.OBJECT_TAG, checkedObjectFieldTag,
1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.getName(JDWPConstants.Tag.OBJECT_TAG),
1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPConstants.Tag.getName(checkedObjectFieldTag));
1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long checkedObject_02ID = checkedObjectFieldValue.getLongValue();
1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Returned ObjectID for checkedObject_02 = "
1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObject_02ID);
1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter
1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .println("\n=> Send ObjectReference::DisableCollection command for checkedObject_01...");
1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        CommandPacket disableCollectionCommand = new CommandPacket(
1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.CommandSetID,
1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.DisableCollectionCommand);
1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        disableCollectionCommand.setNextValueAsObjectID(checkedObject_01ID);
1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        ReplyPacket disableCollectionReply = debuggeeWrapper.vmMirror
1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .performCommand(disableCollectionCommand);
1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        disableCollectionCommand = null;
1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkReplyPacket(disableCollectionReply,
1405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "ObjectReference::DisableCollection command");
1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter
1435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .println("=> Send to Debuggee signal to continue and try to unload checked objects...");
1445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        finalSyncMessage = null;
1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String messageFromDebuggee = synchronizer.receiveMessage();
1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("\n=> Received message from Debuggee = \""
1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + messageFromDebuggee + "\"");
1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("\n=> Send " + thisCommandName
1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + " for checkedObject_01 and check reply...");
1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        CommandPacket checkedCommand = new CommandPacket(
1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.CommandSetID,
1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.IsCollectedCommand);
1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedCommand.setNextValueAsObjectID(checkedObject_01ID);
1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        ReplyPacket checkedReply = debuggeeWrapper.vmMirror
1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .performCommand(checkedCommand);
1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedCommand = null;
1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkReplyPacket(checkedReply, thisCommandName);
1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        boolean checkedObject_01_IsCollected = checkedReply
1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .getNextValueAsBoolean();
1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> IsCollected for checkedObject_01 = "
1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObject_01_IsCollected);
1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if (messageFromDebuggee.indexOf("checkedObject_01 is UNLOADed;") != -1) {
1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            if (!checkedObject_01_IsCollected) {
1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## FAILURE: Unexpected result for checkedObject_01 of "
1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                                + thisCommandName + ":");
1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## checkedObject_01 is UNLOADed so IsCollected must be 'true'");
1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                failMessage = failMessage +
1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    "Unexpected result for checkedObject_01 of "
1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    + thisCommandName + "\n";
1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        } else {
1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            if (checkedObject_01_IsCollected) {
1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## FAILURE: Unexpected result for checkedObject_01 of "
1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                                + thisCommandName + ":");
1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## checkedObject_01 is NOT UNLOADed so IsCollected must be 'false'");
1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                failMessage = failMessage +
1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    "Unexpected result for checkedObject_01 of "
1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    + thisCommandName + "\n";
1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> PASSED for checkedObject_01");
1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("\n=> Send " + thisCommandName
1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + " for checkedObject_02 and check reply...");
1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedCommand = new CommandPacket(
1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.CommandSetID,
1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ObjectReferenceCommandSet.IsCollectedCommand);
2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedCommand.setNextValueAsObjectID(checkedObject_02ID);
2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedReply = debuggeeWrapper.vmMirror.performCommand(checkedCommand);
2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkedCommand = null;
2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkReplyPacket(checkedReply, thisCommandName);
2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        boolean checkedObject_02_IsCollected = checkedReply
2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                .getNextValueAsBoolean();
2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> IsCollected for checkedObject_02 = "
2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + checkedObject_02_IsCollected);
2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if (messageFromDebuggee.indexOf("checkedObject_02 is UNLOADed;") != -1) {
2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            if (!checkedObject_02_IsCollected) {
2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## FAILURE: Unexpected result for checkedObject_02 of "
2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                                + thisCommandName + ":");
2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## checkedObject_02 is UNLOADed so IsCollected must be 'true'");
2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                failMessage = failMessage +
2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    "Unexpected result for checkedObject_02 of "
2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    + thisCommandName + "\n";
2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        } else {
2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            if (checkedObject_02_IsCollected) {
2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## FAILURE: Unexpected result for checkedObject_02 of "
2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                                + thisCommandName + ":");
2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                logWriter
2285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        .println("## checkedObject_02 is NOT UNLOADed so IsCollected must be 'false'");
2295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                failMessage = failMessage +
2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    "Unexpected result for checkedObject_02 of "
2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    + thisCommandName + "\n";
2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> PASSED for checkedObject_02");
2365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Send to Debuggee signal to funish ...");
2375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
2385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("==> " + thisTestName + " for " + thisCommandName
2395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                + ": FINISH");
2405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if (failMessage.length() > 0) {
2425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            fail(failMessage);
2435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        assertAllDataRead(checkedReply);
2465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes}
248