< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jdi/ObjectReference/referringObjects/referringObjects001/referringObjects001.java

Print this page




  34  *         - soft
  35  *         - weak
  36  *         - phantom
  37  *         - jni local
  38  *         - jni global
  39  *         - jni weak
  40  *     Test is executed for following sublcasses of ObjectReference: StringReference, ThreadReference, ClassLoaderReference, ArrayReference.
  41  *     The test scenario is following:
  42  *     - Debugger VM
  43  *         for refererence_type in <Strong, JNI_Local_Ref, JNI_Global_Ref, JNI_Weak_Ref, PhantomReference, SoftReference, WeakReference>
  44  *         do
  45  *                 - initiate creation of referring objects of type 'refererence_type'
  46  *                 - check the number of referrers and instances is correct
  47  *                 - initiate deletion of some referreres(making them unreachable)
  48  *                 - check the number of referrers and instances is correct
  49  *         done
  50  *     - Debugger VM
  51  *         create references of all possible types to single object, ObjectReference.referringObjects should return only
  52  *         referrers with supported type(Strong, PhantomReference, SoftReference, WeakReference)
  53  *

  54  * @library /vmTestbase
  55  *          /test/lib
  56  * @run driver jdk.test.lib.FileInstaller . .
  57  * @build nsk.jdi.ObjectReference.referringObjects.referringObjects001.referringObjects001
  58  *        nsk.share.jdi.TestClass1
  59  * @run main/othervm/native PropertyResolvingWrapper
  60  *      nsk.jdi.ObjectReference.referringObjects.referringObjects001.referringObjects001
  61  *      -verbose
  62  *      -arch=${os.family}-${os.simpleArch}
  63  *      -waittime=5
  64  *      -debugee.vmkind=java
  65  *      -transport.address=dynamic
  66  *      "-debugee.vmkeys=-Xmx128M ${test.vm.opts} ${test.java.opts}"
  67  */
  68 
  69 package nsk.jdi.ObjectReference.referringObjects.referringObjects001;
  70 
  71 import java.io.PrintStream;
  72 import java.util.*;
  73 


 133         // before debugger command (for example primitive type arrays), so we should filter such objects
 134         List<ObjectReference> objectsToFilter = HeapwalkingDebugger.getObjectReferences(className, vm);
 135 
 136         boolean includedInReferrersCount = HeapwalkingDebuggee.isIncludedIntoReferrersCount(referrerType);
 137         boolean includedInInstancesCount = HeapwalkingDebuggee.isIncludedIntoInstancesCount(referrerType);
 138 
 139         int createInstanceCount = 4;
 140         int referrerCount = 10;
 141 
 142         // create 'createInstanceCount' instances with 'referrerCount' referrers
 143 
 144         pipe.println(HeapwalkingDebuggee.COMMAND_CREATE_INSTANCES + ":" + className + ":" + createInstanceCount + ":" + referrerCount + ":"
 145                 + referrerType);
 146 
 147         int expectedInstanceCount;
 148 
 149         if (includedInInstancesCount)
 150             expectedInstanceCount = createInstanceCount;
 151         else
 152             expectedInstanceCount = 0;





 153 
 154         checkDebugeeAnswer_instanceCounts(className, expectedInstanceCount, objectsToFilter);
 155         checkDebugeeAnswer_instances_referringObjects(objectsToFilter, className, expectedInstanceCount, includedInReferrersCount, referrerCount);
 156 
 157         // delete half of referrers
 158 
 159         int deleteCount = referrerCount / 2;
 160 
 161         pipe.println(HeapwalkingDebuggee.COMMAND_DELETE_REFERRERS + ":" + className + ":" + deleteCount);
 162 
 163         referrerCount -= deleteCount;
 164 
 165         if (includedInInstancesCount)
 166             expectedInstanceCount = createInstanceCount;
 167         else
 168             expectedInstanceCount = 0;
 169 
 170         checkDebugeeAnswer_instanceCounts(className, expectedInstanceCount, objectsToFilter);
 171         checkDebugeeAnswer_instances_referringObjects(objectsToFilter, className, expectedInstanceCount, includedInReferrersCount, referrerCount);
 172 




  34  *         - soft
  35  *         - weak
  36  *         - phantom
  37  *         - jni local
  38  *         - jni global
  39  *         - jni weak
  40  *     Test is executed for following sublcasses of ObjectReference: StringReference, ThreadReference, ClassLoaderReference, ArrayReference.
  41  *     The test scenario is following:
  42  *     - Debugger VM
  43  *         for refererence_type in <Strong, JNI_Local_Ref, JNI_Global_Ref, JNI_Weak_Ref, PhantomReference, SoftReference, WeakReference>
  44  *         do
  45  *                 - initiate creation of referring objects of type 'refererence_type'
  46  *                 - check the number of referrers and instances is correct
  47  *                 - initiate deletion of some referreres(making them unreachable)
  48  *                 - check the number of referrers and instances is correct
  49  *         done
  50  *     - Debugger VM
  51  *         create references of all possible types to single object, ObjectReference.referringObjects should return only
  52  *         referrers with supported type(Strong, PhantomReference, SoftReference, WeakReference)
  53  *
  54  * @requires vm.gc != "Z"
  55  * @library /vmTestbase
  56  *          /test/lib
  57  * @run driver jdk.test.lib.FileInstaller . .
  58  * @build nsk.jdi.ObjectReference.referringObjects.referringObjects001.referringObjects001
  59  *        nsk.share.jdi.TestClass1
  60  * @run main/othervm/native PropertyResolvingWrapper
  61  *      nsk.jdi.ObjectReference.referringObjects.referringObjects001.referringObjects001
  62  *      -verbose
  63  *      -arch=${os.family}-${os.simpleArch}
  64  *      -waittime=5
  65  *      -debugee.vmkind=java
  66  *      -transport.address=dynamic
  67  *      "-debugee.vmkeys=-Xmx128M ${test.vm.opts} ${test.java.opts}"
  68  */
  69 
  70 package nsk.jdi.ObjectReference.referringObjects.referringObjects001;
  71 
  72 import java.io.PrintStream;
  73 import java.util.*;
  74 


 134         // before debugger command (for example primitive type arrays), so we should filter such objects
 135         List<ObjectReference> objectsToFilter = HeapwalkingDebugger.getObjectReferences(className, vm);
 136 
 137         boolean includedInReferrersCount = HeapwalkingDebuggee.isIncludedIntoReferrersCount(referrerType);
 138         boolean includedInInstancesCount = HeapwalkingDebuggee.isIncludedIntoInstancesCount(referrerType);
 139 
 140         int createInstanceCount = 4;
 141         int referrerCount = 10;
 142 
 143         // create 'createInstanceCount' instances with 'referrerCount' referrers
 144 
 145         pipe.println(HeapwalkingDebuggee.COMMAND_CREATE_INSTANCES + ":" + className + ":" + createInstanceCount + ":" + referrerCount + ":"
 146                 + referrerType);
 147 
 148         int expectedInstanceCount;
 149 
 150         if (includedInInstancesCount)
 151             expectedInstanceCount = createInstanceCount;
 152         else
 153             expectedInstanceCount = 0;
 154 
 155         // Note! This test is broken, in the sense that it incorrectly assumes
 156         // that no GC can happen before it walks the heap. In practice, it seems
 157         // to only affect this test when using ZGC. However, this test will also
 158         // fail when using other GCs if an explicit GC is done here.
 159 
 160         checkDebugeeAnswer_instanceCounts(className, expectedInstanceCount, objectsToFilter);
 161         checkDebugeeAnswer_instances_referringObjects(objectsToFilter, className, expectedInstanceCount, includedInReferrersCount, referrerCount);
 162 
 163         // delete half of referrers
 164 
 165         int deleteCount = referrerCount / 2;
 166 
 167         pipe.println(HeapwalkingDebuggee.COMMAND_DELETE_REFERRERS + ":" + className + ":" + deleteCount);
 168 
 169         referrerCount -= deleteCount;
 170 
 171         if (includedInInstancesCount)
 172             expectedInstanceCount = createInstanceCount;
 173         else
 174             expectedInstanceCount = 0;
 175 
 176         checkDebugeeAnswer_instanceCounts(className, expectedInstanceCount, objectsToFilter);
 177         checkDebugeeAnswer_instances_referringObjects(objectsToFilter, className, expectedInstanceCount, includedInReferrersCount, referrerCount);
 178 


< prev index next >