8342270: Test sun/security/pkcs11/Provider/RequiredMechCheck.java needs write access to src tree

Reviewed-by: rhalade, erikj
This commit is contained in:
Fernando Guallini 2024-11-06 18:36:05 +00:00
parent 78b378ad03
commit 342fe42555
2 changed files with 32 additions and 5 deletions

View File

@ -54,12 +54,14 @@ import java.util.Properties;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import jdk.test.lib.Platform;
import jdk.test.lib.Utils;
import jdk.test.lib.artifacts.Artifact;
import jdk.test.lib.artifacts.ArtifactResolver;
import jdk.test.lib.artifacts.ArtifactResolverException;
@ -496,14 +498,13 @@ public abstract class PKCS11Test {
return null;
}
String base = getBase();
String nssConfigDir = copyNssFiles();
String libfile = libdir + System.mapLibraryName(nss_library);
String customDBdir = System.getProperty("CUSTOM_DB_DIR");
String dbdir = (customDBdir != null) ?
customDBdir :
base + SEP + "nss" + SEP + "db";
nssConfigDir + SEP + "db";
// NSS always wants forward slashes for the config path
dbdir = dbdir.replace('\\', '/');
@ -513,7 +514,7 @@ public abstract class PKCS11Test {
System.setProperty("pkcs11test.nss.db", dbdir);
return (customConfig != null) ?
customConfig :
base + SEP + "nss" + SEP + customConfigName;
nssConfigDir + SEP + customConfigName;
}
// Generate a vector of supported elliptic curves of a given provider
@ -796,6 +797,31 @@ public abstract class PKCS11Test {
}
}
//Copy the nss config files to the current directory for tests. Returns the destination path
private static String copyNssFiles() throws Exception {
String nss = "nss";
String db = "db";
Path nssDirSource = Path.of(getBase()).resolve(nss);
Path nssDirDestination = Path.of(".").resolve(nss);
// copy files from nss directory
copyFiles(nssDirSource, nssDirDestination);
// copy files from nss/db directory
copyFiles(nssDirSource.resolve(db), nssDirDestination.resolve(db));
return nssDirDestination.toString();
}
private static void copyFiles(Path dirSource, Path dirDestination) throws IOException {
List<Path> sourceFiles = Arrays
.stream(dirSource.toFile().listFiles())
.filter(File::isFile)
.map(File::toPath)
.collect(Collectors.toList());
List<Path> destFiles = Utils.copyFiles(sourceFiles, dirDestination,
StandardCopyOption.REPLACE_EXISTING);
destFiles.forEach((Path file) -> file.toFile().setWritable(true));
}
public abstract void main(Provider p) throws Exception;
protected boolean skipTest(Provider p) {

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2021, 2024, 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
@ -27,6 +27,7 @@
# @library /test/lib/
# @build jdk.test.lib.util.ForceGC
# jdk.test.lib.Platform
# jdk.test.lib.Utils
# @run shell MultipleLogins.sh
# set a few environment variables so that the shell-script can run stand-alone