test/hotspot/jtreg/vmTestbase/nsk/share/ExceptionCheckingJniEnv/exceptionjni001/exceptionjni001.cpp
author jcbeyler
Wed, 24 Apr 2019 19:51:38 -0700
changeset 54614 fe9f33555993
child 54744 be7839b9493f
permissions -rw-r--r--
8222935: Fix ExceptionCheckingJniEnv system Summary: Added missing tests and fixed the code Reviewed-by: cjplummer, sspitsyn, amenkov
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54614
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     1
/*
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     2
 * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     3
 * Copyright (c) 2018, 2019, Google and/or its affiliates. All rights reserved.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     4
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     5
 *
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     6
 * This code is free software; you can redistribute it and/or modify it
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     7
 * under the terms of the GNU General Public License version 2 only, as
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     8
 * published by the Free Software Foundation.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
     9
 *
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    10
 * This code is distributed in the hope that it will be useful, but WITHOUT
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    11
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    12
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    13
 * version 2 for more details (a copy is included in the LICENSE file that
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    14
 * accompanied this code).
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    15
 *
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License version
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    17
 * 2 along with this work; if not, write to the Free Software Foundation,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    18
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    19
 *
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    20
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    21
 * or visit www.oracle.com if you need additional information or have any
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    22
 * questions.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    23
 */
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    24
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    25
#include <stdint.h>
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    26
#include <stdio.h>
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    27
#include <stdlib.h>
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    28
#include <string.h>
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    29
#include "jvmti.h"
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    30
#include "ExceptionCheckingJniEnv.hpp"
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    31
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    32
// A few static global variables required due to the callback nature of JNI
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    33
// methods.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    34
static bool is_error_called;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    35
static const char* const null_return_expected_message_start =
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    36
    "JNI method GetFieldID : Return is NULL from exceptionjni001.cpp : ";
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    37
static const char* const null_file_expected_message_start =
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    38
    "JNI method GetFieldID : Return is NULL from Unknown File : ";
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    39
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    40
// Used by the ErrorCheckerMessage and the tests to determine test success.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    41
static long expected_line_number;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    42
static bool error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    43
static const char* expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    44
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    45
static bool CheckMessage(JNIEnv* env, const char* message, const char* expected_message,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    46
                         long expected_line) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    47
  if (strstr(message, expected_message) != message) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    48
    fprintf(stderr, "Message does not start as expected:\n\t%s\n\t%s\n",
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    49
            message, expected_message);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    50
    return false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    51
  }
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    52
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    53
  size_t len = strlen(expected_message);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    54
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    55
  char* end_ptr = NULL;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    56
  long actual_line = strtol(message + len, &end_ptr, 0);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    57
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    58
  if (end_ptr == NULL || *end_ptr != '\0') {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    59
    fprintf(stderr, "end_ptr == NULL or *end_ptr terminating from %s\n", message);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    60
    return false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    61
  }
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    62
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    63
  if (actual_line != expected_line) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    64
    fprintf(stderr, "Actual line does not match expected:\n");
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    65
    fprintf(stderr, "\tActual: %ld\n\tExpected: %ld\n\tfrom: %s (%s)\n",
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    66
            actual_line, expected_line, message, message + len);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    67
    return false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    68
  }
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    69
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    70
  // Clear the exception if everything lines up.
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    71
  env->ExceptionClear();
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    72
  return true;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    73
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    74
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    75
static void ErrorCheckerMessage(JNIEnv* env, const char* error_message) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    76
  is_error_called = true;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    77
  error_message_ok = CheckMessage(env, error_message, expected_message_start,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    78
                                  expected_line_number);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    79
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    80
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    81
static bool checkSuccess(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    82
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    83
  is_error_called = false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    84
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    85
  jni->GetFieldID(cls, "anInteger", "I", TRACE_JNI_CALL);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    86
  return !is_error_called;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    87
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    88
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    89
static bool checkFailureMessageReturnNull(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    90
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    91
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    92
  expected_message_start = null_return_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    93
  expected_line_number = __LINE__ + 1;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    94
  jni->GetFieldID(cls, "whatever", "does not matter", TRACE_JNI_CALL);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    95
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    96
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    97
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    98
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
    99
static bool checkFailureMessageEmptyFile(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   100
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   101
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   102
  expected_message_start = null_file_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   103
  expected_line_number = __LINE__ + 1;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   104
  jni->GetFieldID(cls, "whatever", "does not matter", __LINE__, NULL);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   105
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   106
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   107
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   108
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   109
static bool checkFailureMessageNilLine(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   110
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   111
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   112
  expected_message_start = null_return_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   113
  expected_line_number = 0;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   114
  jni->GetFieldID(cls, "whatever", "does not matter", 0, __FILE__);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   115
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   116
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   117
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   118
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   119
static bool checkFailureMessageNegativeLine(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   120
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   121
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   122
  expected_message_start = null_return_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   123
  expected_line_number = -1;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   124
  jni->GetFieldID(cls, "whatever", "does not matter", -1, __FILE__);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   125
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   126
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   127
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   128
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   129
static bool checkFailureMessageMinLine(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   130
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   131
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   132
  expected_message_start = null_return_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   133
  expected_line_number = INT32_MIN;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   134
  jni->GetFieldID(cls, "whatever", "does not matter", INT32_MIN, __FILE__);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   135
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   136
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   137
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   138
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   139
static bool checkFailureMessageMaxLine(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   140
  ExceptionCheckingJniEnvPtr jni(env, ErrorCheckerMessage);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   141
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   142
  expected_message_start = null_return_expected_message_start;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   143
  expected_line_number = INT32_MAX;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   144
  jni->GetFieldID(cls, "whatever", "does not matter", INT32_MAX, __FILE__);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   145
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   146
  return is_error_called && error_message_ok;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   147
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   148
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   149
static bool CheckExceptionJni(JNIEnv* env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   150
  typedef bool (*TestExceptionJniWrapper)(JNIEnv* env, jclass cls);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   151
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   152
  TestExceptionJniWrapper tests[] = {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   153
    checkSuccess,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   154
    checkFailureMessageReturnNull,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   155
    checkFailureMessageEmptyFile,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   156
    checkFailureMessageNilLine,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   157
    checkFailureMessageNegativeLine,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   158
    checkFailureMessageMinLine,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   159
    checkFailureMessageMaxLine,
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   160
  };
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   161
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   162
  size_t max_tests = sizeof(tests) / sizeof(tests[0]);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   163
  for (size_t i = 0; i < max_tests; i++) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   164
    is_error_called = false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   165
    error_message_ok = false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   166
    if (!tests[i](env, cls)) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   167
      return false;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   168
    }
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   169
  }
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   170
  return true;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   171
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   172
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   173
extern "C" {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   174
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   175
jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   176
  return JNI_OK;
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   177
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   178
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   179
JNIEXPORT jboolean JNICALL
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   180
Java_nsk_share_ExceptionCheckingJniEnv_exceptionjni001_check(JNIEnv *env, jclass cls) {
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   181
  return CheckExceptionJni(env, cls);
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   182
}
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   183
fe9f33555993 8222935: Fix ExceptionCheckingJniEnv system
jcbeyler
parents:
diff changeset
   184
}