Path: blob/master/test/hotspot/jtreg/vmTestbase/nsk/jvmti/GetCurrentThreadCpuTime/curthrcputime001/TestDescription.java
40955 views
/*1* Copyright (c) 2018, 2020, 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*/222324/*25* @test26*27* @summary converted from VM Testbase nsk/jvmti/GetCurrentThreadCpuTime/curthrcputime001.28* VM Testbase keywords: [quick, jpda, jvmti, noras]29* VM Testbase readme:30* DESCRIPTION31* This JVMTI test exercises JVMTI thread function GetCurrentThreadCpuTime().32* This test checks that GetCurrentThreadCpuTime() returns correct time value33* for either Java thread in debuggee class and agent thread itself.34* And this value is increased monotonically as each thread run some code.35* Function GetCurrentThreadCpuTime() is invoked only for current thread36* passing NULL instead of thread object.37* Debuggee class runs special tested Java thread to generate THREAD_START38* and THREAD_END events. Only those events are considered which are39* for the thread with the expected name.40* The following checks are performed for GetCurrentThreadCpuTime():41* for initial thread:42* - in VM_INIT event callback (initial)43* for agent thread:44* - at the begin of agent thread (initial)45* - between THREAD_START and THREAD_END events46* - at the end of agent thread47* for tested Java thread:48* - in THREAD_START event callback (initial)49* - in THREAD_END event callback50* for terminating thread:51* - in VM_DEATH event callback (initial)52* In initial check for each thread GetCurrentThreadCpuTime() is called53* and returned cpu time is saved in corresponding variable.54* If this time is negative, then thye chack fails.55* If this tuime is zero, then warning message is printed,56* but the test passes.57* In further checks for each thread GetCurrentThreadCpuTime() is called58* and returned cpu time is compared with previous value.59* If newly returned cpu time is not greated than previously60* saved one, the check fails.61* Before each futher check each thread calls doIteration() function62* to run some code in a loop, to ensure the cpu time for tested63* thread is valuable increased. Particular number of iterations64* is configured with agent option 'iterations=<number>'.65* If all checks are successful, then test pases with exit status 95.66* If any check fails or other error occurs, then agent sets FAIL status67* and the test fails with exit status 97.68* If the last check (in VM_DEATH callback) fails, then C-language exit()69* function is used to force VM exit with fail status 97.70* COMMENTS71* Fixed the 4968019, 5006885 bugs.72*73* @library /vmTestbase74* /test/lib75* @build nsk.jvmti.GetCurrentThreadCpuTime.curthrcputime00176* @run main/othervm/native77* -agentlib:curthrcputime001=-waittime=5,iterations=100078* nsk.jvmti.GetCurrentThreadCpuTime.curthrcputime00179*/80818283