8133801: sun/security/pkcs11/Provider/ConfigShortPath.java failed in jigsaw nightly at Windows

Update tests to not using private SunPKCS11(String) constructor.

Reviewed-by: mullan
This commit is contained in:
Valerie Peng 2015-09-02 03:02:14 +00:00
parent ac523a4082
commit 38b84c3cbd
2 changed files with 51 additions and 52 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -22,40 +22,31 @@
*/
/**
* @test
* @bug 7003952
* @bug 7003952 7191662
* @library ..
* @summary load DLLs and launch executables using fully qualified path
*/
import java.security.*;
import java.lang.reflect.*;
public class Absolute {
public static void main(String[] args) throws Exception {
Constructor cons;
try {
Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11");
cons = clazz.getConstructor(new Class[] {String.class});
} catch (Exception ex) {
System.out.println("Skipping test - no PKCS11 provider available");
return;
}
String config =
System.getProperty("test.src", ".") + "/Absolute.cfg";
try {
Object obj = cons.newInstance(new Object[] {config});
} catch (InvocationTargetException ite) {
Throwable cause = ite.getCause();
if (cause instanceof ProviderException) {
Throwable cause2 = cause.getCause();
if ((cause2 == null) ||
!cause2.getMessage().startsWith(
"Absolute path required for library value:")) {
// rethrow
throw (ProviderException) cause;
}
System.out.println("Caught expected Exception: \n" + cause2);
Provider p = PKCS11Test.getSunPKCS11(config);
if (p == null) {
System.out.println("Skipping test - no PKCS11 provider available");
}
} catch (InvalidParameterException ipe) {
Throwable ex = ipe.getCause();
if (ex.getMessage().indexOf(
"Absolute path required for library value:") != -1) {
System.out.println("Test Passed: expected exception thrown");
} else {
// rethrow
throw ipe;
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -33,44 +33,52 @@ import java.lang.reflect.*;
public class ConfigShortPath {
private static final String[] configNames = {
"csp.cfg", "cspPlus.cfg", "cspSpace.cfg", "cspQuotedPath.cfg"
private static final String[] winConfigNames = {
"csp.cfg", "cspSpace.cfg", "cspQuotedPath.cfg"
};
private static final String[] solConfigNames = {
"cspPlus.cfg"
};
public static void main(String[] args) throws Exception {
Constructor cons = null;
try {
Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11");
cons = clazz.getConstructor(String.class);
} catch (Exception ex) {
System.out.println("Skipping test - no PKCS11 provider available");
return;
Provider p = Security.getProvider("SunPKCS11");
if (p == null) {
// re-try w/ SunPKCS11-Solaris
p = Security.getProvider("SunPKCS11-Solaris");
if (p == null) {
System.out.println("Skipping test - no PKCS11 provider available");
return;
}
}
String osInfo = System.getProperty("os.name", "");
String[] configNames = (osInfo.contains("Windows")?
winConfigNames : solConfigNames);
String testSrc = System.getProperty("test.src", ".");
for (int i = 0; i < configNames.length; i++) {
String configFile = testSrc + File.separator + configNames[i];
System.out.println("Testing against " + configFile);
try {
Object obj = cons.newInstance(configFile);
} catch (InvocationTargetException ite) {
Throwable cause = ite.getCause();
System.out.println(cause);
if (cause instanceof ProviderException) {
while ((cause = cause.getCause()) != null) {
System.out.println(cause);
String causeMsg = cause.getMessage();
// Indicate failure if due to parsing config
if (causeMsg.indexOf("Unexpected") != -1) {
throw (ProviderException) cause;
}
p.configure(configFile);
} catch (InvalidParameterException ipe) {
ipe.printStackTrace();
Throwable cause = ipe.getCause();
// Indicate failure if due to parsing config
if (cause.getClass().getName().equals
("sun.security.pkcs11.ConfigurationException")) {
// Error occurred during parsing
if (cause.getMessage().indexOf("Unexpected") != -1) {
throw (ProviderException) cause;
}
// Consider the test passes if the exception is
// thrown after parsing, i.e. due to the absolute
// path requirement or the non-existent path.
} else {
// unexpected exception
throw new RuntimeException("Unexpected Exception", cause);
}
} catch (ProviderException pe) {
pe.printStackTrace();
if (pe.getCause() instanceof IOException) {
// Thrown when the directory does not exist which is ok
System.out.println("Pass: config parsed ok");
continue;
}
}
}