test/runtime/7158988/FieldMonitor.java
Print this page
@@ -32,17 +32,14 @@
*/
import java.io.BufferedReader;
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;
+import java.io.File;
import com.sun.jdi.Bootstrap;
import com.sun.jdi.Field;
import com.sun.jdi.ReferenceType;
import com.sun.jdi.VirtualMachine;
@@ -65,21 +62,20 @@
public class FieldMonitor {
public static final String CLASS_NAME = "TestPostFieldModification";
public static final String FIELD_NAME = "value";
public static final String ARGUMENTS = "-Xshare:off -XX:+PrintGC";
+ static final String MY_TMP_FILE_NAME = "FieldMonitor-tmp-filename-7158988";
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]);
+ File file = new File(System.getProperty("user.dir"), MY_TMP_FILE_NAME);
+ if (file.exists()) {
+ file.delete();
}
- //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
@@ -119,10 +115,17 @@
System.out.println("ClassPrepareEvent");
ClassPrepareEvent classPrepEvent = (ClassPrepareEvent) event;
ReferenceType refType = classPrepEvent
.referenceType();
addFieldWatch(vm, refType);
+
+ // inform TestPostFieldModification that it can exit. // JDK-8007710
+ if (!file.exists()) {
+ System.out.println("---FieldMonitor-main creating: " + file.getAbsolutePath());
+ file.createNewFile();
+ file.deleteOnExit();
+ }
} else if (event instanceof ModificationWatchpointEvent) {
System.out.println("sleep for 500 ms");
Thread.sleep(500);
System.out.println("resume...");