Path: blob/master/test/hotspot/jtreg/vmTestbase/nsk/jdi/Event/hashCode/hashcode001a.java
41161 views
/*1* Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/22package nsk.jdi.Event.hashCode;2324import nsk.share.*;25import nsk.share.jpda.*;26import nsk.share.jdi.*;2728// THIS TEST IS LINE NUMBER SENSITIVE29/**30* The debugged application of the test.31*/32public class hashcode001a {3334//------------------------------------------------------- immutable common fields3536private static int exitStatus;37private static ArgumentHandler argHandler;38private static Log log;39private static IOPipe pipe;4041//------------------------------------------------------- immutable common methods4243static void display(String msg) {44log.display("debuggee > " + msg);45}4647static void complain(String msg) {48log.complain("debuggee FAILURE > " + msg);49}5051public static void receiveSignal(String signal) {52String line = pipe.readln();5354if ( !line.equals(signal) )55throw new Failure("UNEXPECTED debugger's signal " + line);5657display("debugger's <" + signal + "> signal received.");58}5960//------------------------------------------------------ mutable common fields6162//------------------------------------------------------ test specific fields6364static Object lock = new Object();65static Object wait = new Object();6667//------------------------------------------------------ mutable common method6869public static void main (String argv[]) {70exitStatus = Consts.TEST_FAILED;71argHandler = new ArgumentHandler(argv);72log = new Log(System.err, argHandler);73pipe = argHandler.createDebugeeIOPipe(log);74try {75Thread thread1 = new hashcode001aThread("thread1");7677synchronized (lock) {78synchronized(wait) {79thread1.start();80try {81wait.wait();82pipe.println(hashcode001.SIGNAL_READY);83} catch (InterruptedException e) {84throw new Failure("Unexpected InterruptedException while waiting for notification");85}86}87receiveSignal(hashcode001.SIGNAL_GO);88}89try {90thread1.join();91} catch (InterruptedException e) {92throw new Failure("Unexpected InterruptedException while waiting for thread1 join");93}9495// receiveSignal(hashcode001.SIGNAL_QUIT);96display("completed succesfully.");97System.exit(Consts.TEST_PASSED + Consts.JCK_STATUS_BASE);98} catch (Failure e) {99log.complain(e.getMessage());100System.exit(Consts.TEST_FAILED + Consts.JCK_STATUS_BASE);101}102}103104//--------------------------------------------------------- test specific methods105106}107108//--------------------------------------------------------- test specific classes109110class hashcode001aThread extends Thread {111112String name;113114public hashcode001aThread (String name) {115super(name);116this.name = name;117}118119public void run() {120synchronized (hashcode001a.wait) {121hashcode001a.wait.notifyAll();122}123synchronized (hashcode001a.lock) {124}125126foo();127128hashcode001aThread1 thread2 = new hashcode001aThread1();129thread2.start();130131try {132throw new Exception();133} catch (Exception e) {134}135136try {137thread2.join();138} catch (InterruptedException e) {139throw new Failure("Unexpected InterruptedException while waiting for thread2 join");140}141}142143void foo () {144name = "afterFoo"; // hashcode001.brkpLineNumber145hashcode001a.display("thread1's name == " + name);146}147}148149class hashcode001aThread1 extends Thread {150public void run() {151}152}153154155