< prev index next > test/jdk/java/foreign/enablenativeaccess/TestEnableNativeAccessDynamic.java
Print this page
* questions.
*/
/*
* @test
- * @enablePreview
- * @requires jdk.foreign.linker != "UNSUPPORTED"
* @requires !vm.musl
*
* @library /test/lib
* @build TestEnableNativeAccessDynamic
* panama_module/*
* @summary Test for dynamically setting --enable-native-access flag for a module
*/
import java.util.ArrayList;
import java.util.List;
- import java.util.stream.Stream;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
- import static org.testng.Assert.*;
@Test
- public class TestEnableNativeAccessDynamic {
-
- static final String MODULE_PATH = System.getProperty("jdk.module.path");
-
- static final String PANAMA_MAIN = "panama_module/org.openjdk.foreigntest.PanamaMainDirect";
- static final String PANAMA_REFLECTION = "panama_module/org.openjdk.foreigntest.PanamaMainReflection";
- static final String PANAMA_INVOKE = "panama_module/org.openjdk.foreigntest.PanamaMainInvoke";
- static final String PANAMA_JNI = "panama_module/org.openjdk.foreigntest.PanamaMainJNI";
-
- /**
- * Represents the expected result of a test.
- */
- static final class Result {
- private final boolean success;
- private final List<String> expectedOutput = new ArrayList<>();
- private final List<String> notExpectedOutput = new ArrayList<>();
-
- Result(boolean success) {
- this.success = success;
- }
-
- Result expect(String msg) {
- expectedOutput.add(msg);
- return this;
- }
-
- Result doNotExpect(String msg) {
- notExpectedOutput.add(msg);
- return this;
- }
-
- boolean shouldSucceed() {
- return success;
- }
-
- Stream<String> expectedOutput() {
- return expectedOutput.stream();
- }
-
- Stream<String> notExpectedOutput() {
- return notExpectedOutput.stream();
- }
-
- @Override
- public String toString() {
- String s = (success) ? "success" : "failure";
- for (String msg : expectedOutput) {
- s += "/" + msg;
- }
- return s;
- }
- }
-
- static Result success() {
- return new Result(true);
- }
-
- static Result successNoWarning() {
- return success().doNotExpect("WARNING");
- }
-
- static Result failWithError(String expectedOutput) {
- return new Result(false).expect(expectedOutput);
- }
+ public class TestEnableNativeAccessDynamic extends TestEnableNativeAccessBase {
@DataProvider(name = "succeedCases")
public Object[][] succeedCases() {
return new Object[][] {
{ "panama_enable_native_access", PANAMA_MAIN, successNoWarning() },
{ "panama_enable_native_access_fail_reflection", PANAMA_REFLECTION, failWithError(errMsg) },
{ "panama_enable_native_access_fail_invoke", PANAMA_INVOKE, failWithError(errMsg) },
};
}
- /**
- * Checks an expected result with the output captured by the given
- * OutputAnalyzer.
- */
- void checkResult(Result expectedResult, OutputAnalyzer outputAnalyzer) {
- expectedResult.expectedOutput().forEach(outputAnalyzer::shouldContain);
- expectedResult.notExpectedOutput().forEach(outputAnalyzer::shouldNotContain);
- int exitValue = outputAnalyzer.getExitValue();
- if (expectedResult.shouldSucceed()) {
- assertTrue(exitValue == 0);
- } else {
- assertTrue(exitValue != 0);
- }
- }
-
/**
* Runs the test to execute the given test action. The VM is run with the
* given VM options and the output checked to see that it matches the
* expected result.
*/
OutputAnalyzer run(String action, String moduleAndCls, boolean enableNativeAccess,
Result expectedResult, boolean panamaModuleInBootLayer) throws Exception
{
List<String> list = new ArrayList<>();
- list.add("--enable-preview");
if (panamaModuleInBootLayer) {
list.addAll(List.of("-p", MODULE_PATH));
list.add("--add-modules=panama_module");
list.add("--enable-native-access=panama_module");
} else {
< prev index next >