175 /* :16 */
176 /* :16 */
177 /* :16 */
178 /* :16 */
179 /* :16 */
180
181 return success;
182 }
183
184 /**
185 * Get and check current capabilities.
186 * @returns NSK_FALSE if any error occured.
187 */
188 static int checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) {
189 int success = NSK_TRUE;
190 jvmtiCapabilities caps;
191
192 memset(&caps, 0, sizeof(jvmtiCapabilities));
193
194 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n");
195 if (!NSK_JVMTI_VERIFY(
196 NSK_CPP_STUB2(GetCapabilities, jvmti, &caps))) {
197 return NSK_FALSE;
198 }
199
200 NSK_DISPLAY0("Got raw capabilities:\n");
201 printRawCapabilities(&caps);
202
203 NSK_DISPLAY0("Known capabilities:\n");
204 printKnownCapabilities(&caps);
205
206 NSK_DISPLAY0("Checking capabilities value:\n");
207 success = checkCapabilitiesValue(&caps, initCaps, where);
208 NSK_DISPLAY0(" ... checked\n");
209
210 return success;
211 }
212
213 /**
214 * Add given capabilities list.
215 * @returns NSK_FALSE if any error occured.
216 */
217 static int addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) {
218 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n");
219 if (!NSK_JVMTI_VERIFY(
220 NSK_CPP_STUB2(AddCapabilities, jvmti, caps))) {
221 return NSK_FALSE;
222 }
223 NSK_DISPLAY0(" ... set\n");
224
225 return NSK_TRUE;
226 }
227
228 /* ============================================================================= */
229
230 /** Agent algorithm. */
231 static void JNICALL
232 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
233 NSK_DISPLAY0("Wait for debugee to become ready\n");
234 if (!nsk_jvmti_waitForSync(timeout))
235 return;
236
237 NSK_DISPLAY0(">>> Testcase #3: Check capabilities in agent thread\n");
238 if (!checkCapabilities(jvmti, &initCaps, "agent thread")) {
239 nsk_jvmti_setFailStatus();
240 }
297 }
298 #endif
299 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
300 jvmtiEnv* jvmti = NULL;
301
302 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
303 return JNI_ERR;
304
305 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
306
307 if (!NSK_VERIFY((jvmti =
308 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
309 return JNI_ERR;
310
311 {
312 jvmtiEventCallbacks eventCallbacks;
313
314 memset(&eventCallbacks, 0, sizeof(eventCallbacks));
315 eventCallbacks.VMInit = callbackVMInit;
316 eventCallbacks.VMDeath = callbackVMDeath;
317 if (!NSK_JVMTI_VERIFY(
318 NSK_CPP_STUB3(SetEventCallbacks, jvmti,
319 &eventCallbacks, sizeof(eventCallbacks)))) {
320 return JNI_ERR;
321 }
322
323 }
324
325 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
326 return JNI_ERR;
327
328 NSK_DISPLAY0(">>> Testcase #0: Add empty capabilities list in Agent_OnLoad()\n");
329 memset(&initCaps, 0, sizeof(jvmtiCapabilities));
330 if (!addCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
331 nsk_jvmti_setFailStatus();
332 }
333
334 NSK_DISPLAY0(">>> Testcase #1: Check capabilities in Agent_OnLoad()\n");
335 if (!checkCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
336 nsk_jvmti_setFailStatus();
337 }
338
339 NSK_DISPLAY1("Enable events: %d events\n", EVENTS_COUNT);
|
175 /* :16 */
176 /* :16 */
177 /* :16 */
178 /* :16 */
179 /* :16 */
180
181 return success;
182 }
183
184 /**
185 * Get and check current capabilities.
186 * @returns NSK_FALSE if any error occured.
187 */
188 static int checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) {
189 int success = NSK_TRUE;
190 jvmtiCapabilities caps;
191
192 memset(&caps, 0, sizeof(jvmtiCapabilities));
193
194 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n");
195 if (!NSK_JVMTI_VERIFY(jvmti->GetCapabilities(&caps))) {
196 return NSK_FALSE;
197 }
198
199 NSK_DISPLAY0("Got raw capabilities:\n");
200 printRawCapabilities(&caps);
201
202 NSK_DISPLAY0("Known capabilities:\n");
203 printKnownCapabilities(&caps);
204
205 NSK_DISPLAY0("Checking capabilities value:\n");
206 success = checkCapabilitiesValue(&caps, initCaps, where);
207 NSK_DISPLAY0(" ... checked\n");
208
209 return success;
210 }
211
212 /**
213 * Add given capabilities list.
214 * @returns NSK_FALSE if any error occured.
215 */
216 static int addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) {
217 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n");
218 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(caps))) {
219 return NSK_FALSE;
220 }
221 NSK_DISPLAY0(" ... set\n");
222
223 return NSK_TRUE;
224 }
225
226 /* ============================================================================= */
227
228 /** Agent algorithm. */
229 static void JNICALL
230 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
231 NSK_DISPLAY0("Wait for debugee to become ready\n");
232 if (!nsk_jvmti_waitForSync(timeout))
233 return;
234
235 NSK_DISPLAY0(">>> Testcase #3: Check capabilities in agent thread\n");
236 if (!checkCapabilities(jvmti, &initCaps, "agent thread")) {
237 nsk_jvmti_setFailStatus();
238 }
295 }
296 #endif
297 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
298 jvmtiEnv* jvmti = NULL;
299
300 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
301 return JNI_ERR;
302
303 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
304
305 if (!NSK_VERIFY((jvmti =
306 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
307 return JNI_ERR;
308
309 {
310 jvmtiEventCallbacks eventCallbacks;
311
312 memset(&eventCallbacks, 0, sizeof(eventCallbacks));
313 eventCallbacks.VMInit = callbackVMInit;
314 eventCallbacks.VMDeath = callbackVMDeath;
315 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks)))) {
316 return JNI_ERR;
317 }
318
319 }
320
321 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
322 return JNI_ERR;
323
324 NSK_DISPLAY0(">>> Testcase #0: Add empty capabilities list in Agent_OnLoad()\n");
325 memset(&initCaps, 0, sizeof(jvmtiCapabilities));
326 if (!addCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
327 nsk_jvmti_setFailStatus();
328 }
329
330 NSK_DISPLAY0(">>> Testcase #1: Check capabilities in Agent_OnLoad()\n");
331 if (!checkCapabilities(jvmti, &initCaps, "Agent_OnLoad()")) {
332 nsk_jvmti_setFailStatus();
333 }
334
335 NSK_DISPLAY1("Enable events: %d events\n", EVENTS_COUNT);
|