diff test/runtime/7158988/FieldMonitor.java @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents cbdbdd6577f6
children 52b4284cb496
line wrap: on
line diff
--- a/test/runtime/7158988/FieldMonitor.java	Tue Apr 01 14:09:03 2014 +0200
+++ b/test/runtime/7158988/FieldMonitor.java	Tue Apr 01 13:57:07 2014 +0200
@@ -34,6 +34,10 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -52,7 +56,6 @@
 import com.sun.jdi.event.EventSet;
 import com.sun.jdi.event.ModificationWatchpointEvent;
 import com.sun.jdi.event.VMDeathEvent;
-import com.sun.jdi.event.VMStartEvent;
 import com.sun.jdi.event.VMDisconnectEvent;
 import com.sun.jdi.request.ClassPrepareRequest;
 import com.sun.jdi.request.EventRequest;
@@ -68,10 +71,24 @@
   public static void main(String[] args)
       throws IOException, InterruptedException {
 
+    StringBuffer sb = new StringBuffer();
+
+    for (int i=0; i < args.length; i++) {
+        sb.append(' ');
+        sb.append(args[i]);
+    }
     //VirtualMachine vm = launchTarget(sb.toString());
     VirtualMachine vm = launchTarget(CLASS_NAME);
 
     System.out.println("Vm launched");
+    // set watch field on already loaded classes
+    List<ReferenceType> referenceTypes = vm
+        .classesByName(CLASS_NAME);
+    for (ReferenceType refType : referenceTypes) {
+      addFieldWatch(vm, refType);
+    }
+    // watch for loaded classes
+    addClassWatch(vm);
 
     // process events
     EventQueue eventQueue = vm.eventQueue();
@@ -87,15 +104,13 @@
     errThread.start();
     outThread.start();
 
+
+    vm.resume();
     boolean connected = true;
-    int watched = 0;
     while (connected) {
       EventSet eventSet = eventQueue.remove();
       for (Event event : eventSet) {
-        System.out.println("FieldMonitor-main receives: "+event);
-        if (event instanceof VMStartEvent) {
-          addClassWatch(vm);
-        } else if (event instanceof VMDeathEvent
+        if (event instanceof VMDeathEvent
             || event instanceof VMDisconnectEvent) {
           // exit
           connected = false;
@@ -107,17 +122,17 @@
               .referenceType();
           addFieldWatch(vm, refType);
         } else if (event instanceof ModificationWatchpointEvent) {
-          watched++;
           System.out.println("sleep for 500 ms");
           Thread.sleep(500);
+          System.out.println("resume...");
 
           ModificationWatchpointEvent modEvent = (ModificationWatchpointEvent) event;
           System.out.println("old="
               + modEvent.valueCurrent());
           System.out.println("new=" + modEvent.valueToBe());
+          System.out.println();
         }
       }
-      System.out.println("resume...");
       eventSet.resume();
     }
     // Shutdown begins when event thread terminates
@@ -127,10 +142,6 @@
     } catch (InterruptedException exc) {
         // we don't interrupt
     }
-
-    if (watched != 11) { // init + 10 modifications in TestPostFieldModification class
-        throw new Error("Expected to receive 11 times ModificationWatchpointEvent, but got "+watched);
-    }
   }
 
   /**