< prev index next >

test/vmTestbase/nsk/jvmti/PopFrame/popframe005.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -21,25 +21,24 @@
  * questions.
  */
 
 package nsk.jvmti.PopFrame;
 
+import jdk.test.lib.Utils;
 import nsk.share.Consts;
-
 import nsk.share.Wicket;
 import java.io.PrintStream;
 
 /**
  * This test checks that after popping a method's frame by the JVMTI
  * function <code>PopFrame()</code>:
  * <li>lock acquired by the popped frame will be released
  * <li>no JVMTI events will be generated by the function <code>PopFrame()</code>
  */
 public class popframe005 {
-    static final int WAIT_TIME = 2000;
+    static final long WAIT_TIME = Utils.adjustTimeout(2000);
 
-    static boolean DEBUG_MODE = false;
     static volatile int testedStep = 0; /* 0- action no yet started
                                            1- a frame is to be popped
                                            2- checking monitors state
                                            3- finishing the test */
     static volatile int result = Consts.TEST_PASSED;

@@ -76,23 +75,19 @@
 
     private int runIt(String argv[], PrintStream out) {
         Object lockObj[] = new Object[2];
 
         this.out = out;
-        for (int i = 0; i < argv.length; i++) {
-            if (argv[i].equals("-v")) // verbose mode
-                DEBUG_MODE = true;
-        }
 
         lockObj[0] = new Object();
         lockObj[1] = new Object();
 
-        startGuarantee = new Wicket("startGuarantee", 1, (DEBUG_MODE ? System.out : null));
-        finishGuarantee = new Wicket("finishGuarantee", 1, (DEBUG_MODE ? System.out : null));
+        startGuarantee = new Wicket("startGuarantee", 1, System.out);
+        finishGuarantee = new Wicket("finishGuarantee", 1, System.out);
 
         allThreadsStoppedGuarantee =
-            new Wicket("allThreadsStoppedGuarantee", 3, (DEBUG_MODE ? System.out : null));
+            new Wicket("allThreadsStoppedGuarantee", 3, System.out);
 
         // start a thread whose top frame is to be popped
         popFrameClsThr = new popFrameCls("Tested Thread", lockObj);
         popFrameClsThr.start();
 

@@ -107,77 +102,67 @@
         objWaiterThr2.start();
 
         // pause until the first thread exit notification-block
         allThreadsStoppedGuarantee.waitFor();
         synchronized (allThreadsStoppedBarrier) {
-            if (DEBUG_MODE) {
                 out.println("Passed barrier in main thread");
                 out.flush();
             }
-        }
 
         /////////////////////// popping a frame ////////////////////////
         testedStep = 1;
 
-        if (DEBUG_MODE) {
             out.println("State transition: testedStep: 0->1");
             out.println("Going to pop the frame...");
             out.flush();
-        }
 
         boolean retValue = doPopFrame(popFrameClsThr);
 
         popFrameClsThr.letItGo();
         if (!retValue)
             return Consts.TEST_FAILED;
 
         ///////////////////// check monitors state /////////////////////
         testedStep = 2;
 
-        if (DEBUG_MODE) {
             out.println("State transition: testedStep: 1->2");
             out.flush();
-        }
 
         if (!popFrameClsThr.isAlive()) {
             out.println("TEST FAILURE: thread with the method's popped frame is dead");
             return Consts.TEST_FAILED;
         }
 
         try {
             objWaiterThr2.join(WAIT_TIME);
         } catch (InterruptedException e) {
-            if (DEBUG_MODE)
                 out.println("Joining the objWaiterThr2's thread: caught " + e);
         }
 
         if (objWaiterThr2.isAlive()) { // objWaiterThr2 should be dead
             out.println("TEST FAILED: Lock acquired by a popped frame wasn't released\n" + "\twhen the frame had been popped");
             result = Consts.TEST_FAILED;
         }
 
         try {
-            objWaiterThr1.join(WAIT_TIME);
+            // don't want to wait too much if timeout.factor is big
+            objWaiterThr1.join(Math.min(WAIT_TIME, 5000));
         } catch (InterruptedException e) {
-            if (DEBUG_MODE) {
                 out.println("Joining the objWaiterThr1's thread: caught " + e);
                 out.flush();
             }
-        }
         if (!objWaiterThr1.isAlive()) { // objWaiterThr2 should be alive
             out.println("TEST FAILED: Lock acquired by a frame, different from the popped one,\n"
                 + "\twas released when the popped frame had been popped");
             result = Consts.TEST_FAILED;
         }
 
         /////////////////////// finish the test ///////////////////////
         testedStep = 3;
 
-        if (DEBUG_MODE) {
             out.println("State transition: testedStep: 2->3");
             out.flush();
-        }
 
         finishGuarantee.unlock();
 
         try {
             if (popFrameClsThr.isAlive())

@@ -207,44 +192,35 @@
 
         public void run() {
             synchronized(lockObj[0]) {
                 activeMethod();
             }
-            if (DEBUG_MODE)
-                out.println("popFrameCls (" + this +
-                    "): exiting..."); out.flush();
+            out.println("popFrameCls (" + this + "): exiting...");
+            out.flush();
         }
 
         public void activeMethod() {
             boolean compl = true;
 
             if (popframe005.testedStep != 0) { // popping has been done
-                if (DEBUG_MODE) {
-                    out.println("popFrameCls (" + this +
-                        "): enter activeMethod() after popping");
+                out.println("popFrameCls (" + this + "): enter activeMethod() after popping");
                     out.flush();
-                }
 
                 // wait for checking monitors state by the main thread
                 finishGuarantee.waitFor();
 
-                if (DEBUG_MODE) {
-                    out.println("popFrameCls (" + this +
-                        "): leaving activeMethod()");
+                out.println("popFrameCls (" + this + "): leaving activeMethod()");
                     out.flush();
-                }
 
                 return;
             }
 
             try {
                 synchronized(lockObj[1]) {
                     synchronized(allThreadsStoppedBarrier) {
-                        if (DEBUG_MODE) {
                             out.println("popFrameCls (" + this + "): inside activeMethod()");
                             out.flush();
-                        }
 
                         // notify the main thread
                         startGuarantee.unlock();
 
                         allThreadsStoppedGuarantee.unlock();

@@ -299,37 +275,33 @@
         }
 
         public void run() {
             // notify the main thread
             synchronized(allThreadsStoppedBarrier) {
-                if (DEBUG_MODE) {
                     out.println("objWaiter(" + this +
                             "): waiting for a lockObj" + objIdent +
                             "'s monitor; testedStep=" + testedStep);
                     out.flush();
-                }
 
                 allThreadsStoppedGuarantee.unlock();
             }
 
             try {
                 synchronized(lockObj) {
                     if (testedStep <= contrVal) {
                         out.println("TEST FAILED: the lockObj" + objIdent +
                             "'s monitor became free too early");
                         result = Consts.TEST_FAILED;
-                    } else if (DEBUG_MODE) {
+                    } else {
                         out.println("Check PASSED: objWaiter(" + this +
                             "): enter the lockObj" + objIdent + "'s monitor");
                         out.flush();
                     }
                 }
 
-                if (DEBUG_MODE) {
                     out.println("objWaiter (" + this + "): exiting...");
                     out.flush();
-                }
             } catch (Exception e) {
                 out.println("TEST FAILURE: objWaiter (" + this + "): caught " + e);
             }
         }
     }
< prev index next >