changeset 51928:f095e3bc2d41

8206258: [Test Error] sun/security/pkcs11 tests fail if NSS libs not found Summary: Improve the logics on skipping test Reviewed-by: valeriep
author jjiang
date Thu, 26 Jul 2018 08:46:27 +0800
parents d31dcfaa96f3
children 73f3487f271d
files test/jdk/sun/security/pkcs11/PKCS11Test.java test/jdk/sun/security/pkcs11/Secmod/TestNssDbSqlite.java test/jdk/sun/security/pkcs11/Signature/TestDSAKeyLength.java test/jdk/sun/security/pkcs11/ec/TestCurves.java test/jdk/sun/security/pkcs11/ec/TestECDH.java test/jdk/sun/security/pkcs11/ec/TestECDH2.java test/jdk/sun/security/pkcs11/ec/TestECDSA.java test/jdk/sun/security/pkcs11/ec/TestECDSA2.java test/jdk/sun/security/pkcs11/ec/TestECGenSpec.java
diffstat 9 files changed, 102 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/test/jdk/sun/security/pkcs11/PKCS11Test.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/PKCS11Test.java	Thu Jul 26 08:46:27 2018 +0800
@@ -154,7 +154,15 @@
 
     public abstract void main(Provider p) throws Exception;
 
+    protected boolean skipTest(Provider p) {
+        return false;
+    }
+
     private void premain(Provider p) throws Exception {
+        if (skipTest(p)) {
+            return;
+        }
+
         // set a security manager and policy before a test case runs,
         // and disable them after the test case finished
         try {
@@ -327,9 +335,10 @@
     }
 
     static boolean isBadNSSVersion(Provider p) {
-        if (isNSS(p) && badNSSVersion) {
+        double nssVersion = getNSSVersion();
+        if (isNSS(p) && nssVersion >= 3.11 && nssVersion < 3.12) {
             System.out.println("NSS 3.11 has a DER issue that recent " +
-                    "version do not.");
+                    "version do not, skipping");
             return true;
         }
         return false;
@@ -667,9 +676,6 @@
 
     private final static char[] hexDigits = "0123456789abcdef".toCharArray();
 
-    static final boolean badNSSVersion =
-            getNSSVersion() >= 3.11 && getNSSVersion() < 3.12;
-
     private static final String distro = distro();
 
     static final boolean badSolarisSparc =
--- a/test/jdk/sun/security/pkcs11/Secmod/TestNssDbSqlite.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/Secmod/TestNssDbSqlite.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Red Hat, Inc. and/or its affiliates.
+ * Copyright (c) 2017, 2018, Red Hat, Inc. and/or its affiliates.
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -66,7 +66,9 @@
 
     public static void main(String[] args) throws Exception {
 
-        initialize();
+        if (!initialize()) {
+            return;
+        }
 
         if (enableDebug) {
             System.out.println("SunPKCS11 provider: " +
@@ -108,14 +110,15 @@
         }
     }
 
-    private static void initialize() throws Exception {
-        initializeProvider();
+    private static boolean initialize() throws Exception {
+        return initializeProvider();
     }
 
-    private static void initializeProvider () throws Exception {
+    private static boolean initializeProvider() throws Exception {
         useSqlite(true);
         if (!initSecmod()) {
-            return;
+            System.out.println("Cannot init security module database, skipping");
+            return false;
         }
 
         sunPKCS11NSSProvider = getSunPKCS11(BASE + SEP + "nss-sqlite.cfg");
@@ -132,5 +135,7 @@
         gen.generate(2048);
         privateKey = gen.getPrivateKey();
         certificate = gen.getSelfCertificate(new X500Name("CN=Me"), 365);
+
+        return true;
     }
 }
--- a/test/jdk/sun/security/pkcs11/Signature/TestDSAKeyLength.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/Signature/TestDSAKeyLength.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, 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
@@ -47,12 +47,17 @@
     }
 
     @Override
-    public void main(Provider provider) throws Exception {
+    protected boolean skipTest(Provider provider) {
         if (isNSS(provider) && getNSSVersion() >= 3.14) {
             System.out.println("Skip testing NSS " + getNSSVersion());
-            return;
+            return true;
         }
 
+        return false;
+    }
+
+    @Override
+    public void main(Provider provider) throws Exception {
         /*
          * Use Solaris SPARC 11.2 or later to avoid an intermittent failure
          * when running SunPKCS11-Solaris (8044554)
--- a/test/jdk/sun/security/pkcs11/ec/TestCurves.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestCurves.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, 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
@@ -51,20 +51,21 @@
     }
 
     @Override
-    public void main(Provider p) throws Exception {
+    protected boolean skipTest(Provider p) {
         if (p.getService("KeyAgreement", "ECDH") == null) {
             System.out.println("Not supported by provider, skipping");
-            return;
+            return true;
         }
 
-        if (isBadNSSVersion(p)) {
-            return;
+        if (isBadNSSVersion(p) || isBadSolarisSparc(p)) {
+            return true;
         }
 
-        if (isBadSolarisSparc(p)) {
-            return;
-        }
+        return false;
+    }
 
+    @Override
+    public void main(Provider p) throws Exception {
         // Check if this is sparc for later failure avoidance.
         boolean sparc = false;
         if (props.getProperty("os.arch").equals("sparcv9")) {
--- a/test/jdk/sun/security/pkcs11/ec/TestECDH.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestECDH.java	Thu Jul 26 08:46:27 2018 +0800
@@ -91,17 +91,22 @@
     private final static String privBrainpoolP512r1b = "3062020100301406072a8648ce3d020106092b240303020801010d044730450201010440230e18e1bcc88a362fa54e4ea3902009292f7f8033624fd471b5d8ace49d12cfabbc19963dab8e2f1eba00bffb29e4d72d13f2224562f405cb80503666b25429";
     private final static String secretBrainpoolP512r1 = "a7927098655f1f9976fa50a9d566865dc530331846381c87256baf3226244b76d36403c024d7bbf0aa0803eaff405d3d24f11a9b5c0bef679fe1454b21c4cd1f";
 
-    @Override public void main(Provider p) throws Exception {
+    @Override
+    protected boolean skipTest(Provider p) {
         if (p.getService("KeyAgreement", "ECDH") == null) {
             System.out.println("Provider does not support ECDH, skipping");
-            return;
+            return true;
         }
 
         if (isNSS(p) && getNSSECC() == ECCState.Basic) {
-            System.out.println("NSS only supports Basic ECC.  Skipping..");
-            return;
+            System.out.println("NSS only supports Basic ECC, skipping");
+            return true;
         }
 
+        return false;
+    }
+
+    @Override public void main(Provider p) throws Exception {
         /*
          * PKCS11Test.main will remove this provider if needed
          */
--- a/test/jdk/sun/security/pkcs11/ec/TestECDH2.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestECDH2.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, 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
@@ -111,16 +111,21 @@
     }
 
     @Override
-    public void main(Provider provider) throws Exception {
+    protected boolean skipTest(Provider provider) {
         if (provider.getService("KeyAgreement", "ECDH") == null) {
             System.out.println("ECDH not supported, skipping");
-            return;
+            return true;
         }
 
         if (isBadNSSVersion(provider)) {
-            return;
+            return true;
         }
 
+        return false;
+    }
+
+    @Override
+    public void main(Provider provider) throws Exception {
         kf = KeyFactory.getInstance("EC", provider);
         kpg = KeyPairGenerator.getInstance("EC", provider);
 
--- a/test/jdk/sun/security/pkcs11/ec/TestECDSA.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestECDSA.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, 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
@@ -120,22 +120,23 @@
     }
 
     @Override
+    protected boolean skipTest(Provider provider) {
+        if (provider.getService("Signature", "SHA1withECDSA") == null) {
+            System.out.println("ECDSA not supported, skipping");
+            return true;
+        }
+
+        if (isBadNSSVersion(provider) || isBadSolarisSparc(provider)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
     public void main(Provider provider) throws Exception {
         long start = System.currentTimeMillis();
 
-        if (provider.getService("Signature", "SHA1withECDSA") == null) {
-            System.out.println("ECDSA not supported, skipping");
-            return;
-        }
-
-        if (isBadNSSVersion(provider)) {
-            return;
-        }
-
-        if (isBadSolarisSparc(provider)) {
-            return;
-        }
-
         /*
          * PKCS11Test.main will remove this provider if needed
          */
--- a/test/jdk/sun/security/pkcs11/ec/TestECDSA2.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestECDSA2.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, 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
@@ -102,6 +102,26 @@
     }
 
     @Override
+    protected boolean skipTest(Provider provider) {
+        boolean testP256 =
+                provider.getService("Signature", "SHA256withECDSA") != null;
+
+        boolean testP384 =
+                provider.getService("Signature", "SHA384withECDSA") != null;
+
+        if (!testP256 && !testP384) {
+            System.out.println("ECDSA not supported, skipping");
+            return true;
+        }
+
+        if (isBadNSSVersion(provider)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    @Override
     public void main(Provider provider) throws Exception {
         boolean testP256 =
             (provider.getService("Signature", "SHA256withECDSA") != null);
@@ -109,15 +129,6 @@
         boolean testP384 =
             (provider.getService("Signature", "SHA384withECDSA") != null);
 
-        if (!testP256 && !testP384) {
-            System.out.println("ECDSA not supported, skipping");
-            return;
-        }
-
-        if (isBadNSSVersion(provider)) {
-            return;
-        }
-
         kf = KeyFactory.getInstance("EC", provider);
 
         long start = System.currentTimeMillis();
--- a/test/jdk/sun/security/pkcs11/ec/TestECGenSpec.java	Wed Jul 25 17:21:04 2018 -0700
+++ b/test/jdk/sun/security/pkcs11/ec/TestECGenSpec.java	Thu Jul 26 08:46:27 2018 +0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, 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
@@ -47,16 +47,21 @@
     }
 
     @Override
-    public void main(Provider p) throws Exception {
+    protected boolean skipTest(Provider p) {
         if (p.getService("Signature", "SHA1withECDSA") == null) {
             System.out.println("Provider does not support ECDSA, skipping...");
-            return;
+            return true;
         }
 
         if (isBadNSSVersion(p)) {
-            return;
+            return true;
         }
 
+        return false;
+    }
+
+    @Override
+    public void main(Provider p) throws Exception {
         String[] names = { "secp256r1", "NIST P-192", "sect163k1", "1.3.132.0.26",
             "X9.62 c2tnb239v1"};
         int curves = 1;