< prev index next >
test/javax/security/auth/login/modules/JaasModularClientTest.java
Print this page
@@ -19,420 +19,275 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Arrays;
import java.io.IOException;
-import java.io.OutputStream;
-import java.io.File;
import java.lang.module.ModuleDescriptor;
+import java.util.ArrayList;
import jdk.testlibrary.ProcessTools;
import jdk.testlibrary.OutputAnalyzer;
-import jdk.internal.module.ModuleInfoWriter;
+import org.testng.annotations.BeforeTest;
/**
* @test
* @bug 8078813
* @library /jdk/jigsaw/lib
* @library /lib/testlibrary
* @library /java/security/modules
+ * @build CompilerUtils JarUtils
* @summary Test custom JAAS module with all possible modular option. The test
* includes different combination of JAAS client/login modules
- * interaction with or without service description. The different
- * module types used here are,
- * EXPLICIT - Modules have module descriptor(module-info.java) defining
- * the module.
- * AUTO - Are regular jar files but provided in MODULE_PATH instead
- * of CLASS_PATH.
- * UNNAMED - Are regular jar but provided through CLASS_PATH.
- * @run main/othervm -Duser.language=en -Duser.region=US JaasModularClientTest
+ * interaction with or without service description.
+ * @run testng JaasModularClientTest
*/
-public class JaasModularClientTest extends JigsawSecurityUtils {
+public class JaasModularClientTest extends ModularTest {
- private static final String TEST_SRC = System.getProperty("test.src");
- private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
- private static final String DESCRIPTOR = "metaservice";
- private static final String MODULAR = "modular";
- private static final String AUTO = "auto";
- private static final String JAR_EXTN = ".jar";
-
- private static final String SERVICE_MODULE_NAME = "jaasloginmodule";
- private static final Path SERVICE_SRC_DIR
- = SRC_DIR.resolve(SERVICE_MODULE_NAME);
- private static final String SERVICE_PKG = "login";
- private static final String SERVICE_JAR_NAME = SERVICE_PKG + JAR_EXTN;
- private static final String SERVICE_DESCRIPTOR_JAR_NAME
- = SERVICE_PKG + DESCRIPTOR + JAR_EXTN;
- private static final String MODULAR_SERVICE_JAR_NAME
- = MODULAR + SERVICE_PKG + JAR_EXTN;
- private static final String MODULAR_SERVICE_DESCRIPTOR_JAR_NAME
- = MODULAR + SERVICE_PKG + DESCRIPTOR + JAR_EXTN;
-
- private static final String CLIENT_MODULE_NAME = "jaasclientmodule";
- private static final Path CLIENT_SRC_DIR
- = SRC_DIR.resolve(CLIENT_MODULE_NAME);
- private static final String CLIENT_PKG = "client";
- private static final String CLIENT_JAR_NAME = CLIENT_PKG + JAR_EXTN;
- private static final String MODULAR_CLIENT_AUTO_DEPEND_JAR_NAME
- = MODULAR + CLIENT_PKG + AUTO + JAR_EXTN;
- private static final String MODULAR_CLIENT_JAR_NAME
- = MODULAR + CLIENT_PKG + JAR_EXTN;
+ private static final Path S_SRC = SRC.resolve("TestLoginModule.java");
+ private static final String S_PKG = "login";
+ private static final String S_JAR_NAME = S_PKG + JAR_EXTN;
+ private static final String S_DESCR_JAR_NAME = S_PKG + DESCRIPTOR
+ + JAR_EXTN;
+ private static final String MS_JAR_NAME = MODULAR + S_PKG + JAR_EXTN;
+ private static final String MS_DESCR_JAR_NAME = MODULAR + S_PKG + DESCRIPTOR
+ + JAR_EXTN;
+
+ private static final Path C_SRC = SRC.resolve("JaasClient.java");
+ private static final String C_PKG = "client";
+ private static final String C_JAR_NAME = C_PKG + JAR_EXTN;
+ private static final String MC_DEPENDS_ON_AUTO_SERVICE_JAR_NAME = MODULAR
+ + C_PKG + AUTO + JAR_EXTN;
+ private static final String MC_JAR_NAME = MODULAR + C_PKG + JAR_EXTN;
private static final Path BUILD_DIR = Paths.get(".").resolve("build");
private static final Path COMPILE_DIR = BUILD_DIR.resolve("bin");
- private static final Path SERVICE_BUILD_DIR
- = COMPILE_DIR.resolve(SERVICE_PKG);
- private static final Path SERVICE_META_BUILD_DIR
- = COMPILE_DIR.resolve(SERVICE_PKG + DESCRIPTOR);
- private static final Path CLIENT_BUILD_DIR
- = COMPILE_DIR.resolve(CLIENT_PKG);
-
- private static final String EXPLICIT_MODULE_NAME = "jarmodule";
- private static final Path EXPLICIT_MODULE_BASE_PATH
- = BUILD_DIR.resolve(EXPLICIT_MODULE_NAME);
-
+ private static final Path S_BUILD_DIR = COMPILE_DIR.resolve(S_PKG);
+ private static final Path S_WITH_META_DESCR_BUILD_DIR = COMPILE_DIR.resolve(
+ S_PKG + DESCRIPTOR);
+ private static final Path C_BUILD_DIR = COMPILE_DIR.resolve(C_PKG);
+ private static final Path M_BASE_PATH = BUILD_DIR.resolve("mbase");
private static final Path ARTIFACTS_DIR = BUILD_DIR.resolve("artifacts");
- private static final Path SERVICE_ARTIFACTS_DIR
- = ARTIFACTS_DIR.resolve(SERVICE_PKG);
- private static final Path REGULAR_SERVICE_JAR
- = SERVICE_ARTIFACTS_DIR.resolve(SERVICE_JAR_NAME);
- private static final Path REGULAR_SERVICE_WITH_DESCRIPTOR_JAR
- = SERVICE_ARTIFACTS_DIR.resolve(SERVICE_DESCRIPTOR_JAR_NAME);
- private static final Path MODULAR_SERVICE_JAR
- = SERVICE_ARTIFACTS_DIR.resolve(MODULAR_SERVICE_JAR_NAME);
- private static final Path MODULAR_SERVICE_WITH_DESCRIPTOR_JAR
- = SERVICE_ARTIFACTS_DIR.resolve(MODULAR_SERVICE_DESCRIPTOR_JAR_NAME);
-
- private static final Path CLIENT_ARTIFACTS_DIR
- = ARTIFACTS_DIR.resolve(CLIENT_PKG);
- private static final Path REGULAR_CLIENT_JAR
- = CLIENT_ARTIFACTS_DIR.resolve(CLIENT_JAR_NAME);
- private static final Path MODULAR_CLIENT_JAR
- = CLIENT_ARTIFACTS_DIR.resolve(MODULAR_CLIENT_JAR_NAME);
- private static final Path MODULAR_CLIENT_AUTO_DEPEND_JAR
- = CLIENT_ARTIFACTS_DIR.resolve(MODULAR_CLIENT_AUTO_DEPEND_JAR_NAME);
- private static final String MAIN_CLASS = CLIENT_PKG + ".JaasClient";
- private static final String LOGIN_SERVICE_INTERFACE
+ private static final Path S_ARTIFACTS_DIR = ARTIFACTS_DIR.resolve(S_PKG);
+ private static final Path S_JAR = S_ARTIFACTS_DIR.resolve(S_JAR_NAME);
+ private static final Path S_WITH_DESCRIPTOR_JAR = S_ARTIFACTS_DIR.resolve(
+ S_DESCR_JAR_NAME);
+ private static final Path MS_JAR = S_ARTIFACTS_DIR.resolve(MS_JAR_NAME);
+ private static final Path MS_WITH_DESCR_JAR = S_ARTIFACTS_DIR.resolve(
+ MS_DESCR_JAR_NAME);
+
+ private static final Path C_ARTIFACTS_DIR = ARTIFACTS_DIR.resolve(C_PKG);
+ private static final Path C_JAR = C_ARTIFACTS_DIR.resolve(C_JAR_NAME);
+ private static final Path MC_JAR = C_ARTIFACTS_DIR.resolve(MC_JAR_NAME);
+ private static final Path MC_DEPENDS_ON_AUTO_SERVICE_JAR = C_ARTIFACTS_DIR
+ .resolve(MC_DEPENDS_ON_AUTO_SERVICE_JAR_NAME);
+
+ private static final String MAIN = C_PKG + ".JaasClient";
+ private static final String S_INTERFACE
= "javax.security.auth.spi.LoginModule";
- private static final String SERVICE_IMPL = SERVICE_PKG + ".TestLoginModule";
- private static final List<String> REQUIRED_MODULES
- = Arrays.asList("java.base", "jdk.security.auth");
- private static final Path META_DESCRIPTOR = Paths.get("META-INF")
- .resolve("services").resolve(LOGIN_SERVICE_INTERFACE);
- private static final Path META_SERVICE_DESCRIPTOR
- = SERVICE_META_BUILD_DIR.resolve(META_DESCRIPTOR);
-
- private static final boolean WITH_SERVICE_DESCRIPTOR = true;
- private static final boolean WITHOUT_SERVICE_DESCRIPTOR = false;
- private static final boolean PASS = true;
- private static final String EXPECTED_FAILURE = "No LoginModule found";
+ private static final String S_IMPL = S_PKG + ".TestLoginModule";
+ private static final List<String> M_REQUIRED = Arrays.asList("java.base",
+ "jdk.security.auth");
+ private static final Path META_DESCR_PATH = Paths.get("META-INF")
+ .resolve("services").resolve(S_INTERFACE);
+ private static final Path S_META_DESCR_FPATH = S_WITH_META_DESCR_BUILD_DIR
+ .resolve(META_DESCR_PATH);
+
+ private static final boolean WITH_S_DESCR = true;
+ private static final boolean WITHOUT_S_DESCR = false;
+ private static final String LOGIN_MODULE_NOT_FOUND_MSG
+ = "No LoginModule found";
private static final String NO_FAILURE = null;
private static final Map<String, String> VM_ARGS = new LinkedHashMap<>();
- public static void main(String[] args) {
-
- boolean success = true;
- boolean ready = createArtifacts();
- if (!ready) {
- throw new RuntimeException("Unable to prepare to run this test.");
- }
+ /**
+ * Generates Test specific input parameters.
+ */
+ @Override
+ public Object[][] getTestInput() {
+ List<List<Object>> params = new ArrayList<>();
+ String[] args = new String[]{};
//PARAMETER ORDERS -
//client Module Type, Service Module Type,
- //Service META Descriptor Required, Expected Result
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.EXPLICIT,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.EXPLICIT,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.AUTO,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.AUTO,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, EXPECTED_FAILURE);
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.UNNAMED,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.EXPLICIT, MODULE_TYPE.UNNAMED,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
-
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.EXPLICIT,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.EXPLICIT,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.AUTO,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.AUTO,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, EXPECTED_FAILURE);
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.UNNAMED,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.AUTO, MODULE_TYPE.UNNAMED,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
-
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.EXPLICIT,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.EXPLICIT,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.AUTO,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.AUTO,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, EXPECTED_FAILURE);
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.UNNAMED,
- WITH_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
- success &= runTest(MODULE_TYPE.UNNAMED, MODULE_TYPE.UNNAMED,
- WITHOUT_SERVICE_DESCRIPTOR, PASS, NO_FAILURE);
-
- if (!success) {
- throw new RuntimeException("Atleast one test failed.");
+ //Service META Descriptor Required,
+ //Expected Failure message, mechanism used to find the provider
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.EXPLICIT,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.EXPLICIT,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.AUTO,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.AUTO,
+ WITHOUT_S_DESCR, LOGIN_MODULE_NOT_FOUND_MSG, args));
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.UNNAMED,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.EXPLICIT, MODULE_TYPE.UNNAMED,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.EXPLICIT,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.EXPLICIT,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.AUTO,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.AUTO,
+ WITHOUT_S_DESCR, LOGIN_MODULE_NOT_FOUND_MSG, args));
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.UNNAMED,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.AUTO, MODULE_TYPE.UNNAMED,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.EXPLICIT,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.EXPLICIT,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.AUTO,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.AUTO,
+ WITHOUT_S_DESCR, LOGIN_MODULE_NOT_FOUND_MSG, args));
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.UNNAMED,
+ WITH_S_DESCR, NO_FAILURE, args));
+ params.add(Arrays.asList(MODULE_TYPE.UNNAMED, MODULE_TYPE.UNNAMED,
+ WITHOUT_S_DESCR, NO_FAILURE, args));
+ return params.stream().map(p -> p.toArray()).toArray(Object[][]::new);
+ }
+
+ /**
+ * Pre-compile and generate the artifacts required to run this test before
+ * running each test cases.
+ */
+ @BeforeTest
+ public void buildArtifacts() {
+
+ boolean done = true;
+ try {
+ VM_ARGS.put("-Duser.language=", "en");
+ VM_ARGS.put("-Duser.region", "US");
+ VM_ARGS.put("-Djava.security.auth.login.config=", SRC.resolve(
+ "jaas.conf").toFile().getCanonicalPath());
+
+ done = CompilerUtils.compile(S_SRC, S_BUILD_DIR);
+ done &= CompilerUtils.compile(S_SRC, S_WITH_META_DESCR_BUILD_DIR);
+ done &= createMetaInfServiceDescriptor(S_META_DESCR_FPATH, S_IMPL);
+ //Generate regular/modular jars with(out) META-INF
+ //service descriptor
+ generateJar(true, MODULE_TYPE.EXPLICIT, MS_JAR, S_BUILD_DIR, false);
+ generateJar(true, MODULE_TYPE.EXPLICIT, MS_WITH_DESCR_JAR,
+ S_WITH_META_DESCR_BUILD_DIR, false);
+ generateJar(true, MODULE_TYPE.UNNAMED, S_JAR, S_BUILD_DIR, false);
+ generateJar(true, MODULE_TYPE.UNNAMED, S_WITH_DESCRIPTOR_JAR,
+ S_WITH_META_DESCR_BUILD_DIR, false);
+ //Generate regular/modular(depends on explicit/auto service)
+ //jars for client
+ done &= CompilerUtils.compile(C_SRC, C_BUILD_DIR);
+ generateJar(false, MODULE_TYPE.EXPLICIT, MC_JAR, C_BUILD_DIR, true);
+ generateJar(false, MODULE_TYPE.EXPLICIT,
+ MC_DEPENDS_ON_AUTO_SERVICE_JAR, C_BUILD_DIR, false);
+ generateJar(false, MODULE_TYPE.UNNAMED, C_JAR, C_BUILD_DIR, false);
+ System.out.format("%nArtifacts generated successfully? %s", done);
+ if (!done) {
+ throw new RuntimeException("Artifact generation failed");
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
- public static boolean runTest(MODULE_TYPE clientModuleType,
- MODULE_TYPE serviceModuletype, boolean addMetaInfDescriptor,
- boolean expectedResult, String expectedFailure) {
+ /**
+ * Generate modular/regular jar based on module type for this test.
+ */
+ private void generateJar(boolean isService, MODULE_TYPE moduleType,
+ Path jar, Path compilePath, boolean depends) throws IOException {
- boolean result = true;
- try {
+ ModuleDescriptor mDescriptor = null;
+ if (isService) {
+ mDescriptor = generateModuleDescriptor(isService, moduleType, S_PKG,
+ S_PKG, S_INTERFACE, S_IMPL, null, M_REQUIRED, depends);
+ } else {
+ mDescriptor = generateModuleDescriptor(isService, moduleType, C_PKG,
+ C_PKG, S_INTERFACE, null, S_PKG, M_REQUIRED, depends);
+ }
+ generateJar(mDescriptor, jar, compilePath);
+ }
- String testName = (clientModuleType + "_")
- + (serviceModuletype + "_")
- + ((addMetaInfDescriptor) ? "DESCRIPTOR" : "NO_DESCRIPTOR");
-
- System.out.println(String.format(
- "Starting Test case: '%s'", testName));
- Path clientJarPath = findJarPath(false, clientModuleType, false,
- (serviceModuletype == MODULE_TYPE.EXPLICIT));
- Path serviceJarPath = findJarPath(
- true, serviceModuletype, addMetaInfDescriptor, false);
- System.out.println(String.format(
- "Client jar path : %s ", clientJarPath));
- System.out.println(String.format(
- "Service jar path : %s ", serviceJarPath));
+ /**
+ * Holds Logic for the test client. This method will get called with each
+ * test parameter.
+ */
+ @Override
+ public OutputAnalyzer executeTestClient(MODULE_TYPE cModuleType,
+ Path cJarPath, MODULE_TYPE sModuletype, Path sJarPath,
+ String... args) throws Exception {
+
+ OutputAnalyzer output = null;
+ try {
//For automated/explicit module type copy the corresponding
//jars to module base folder, which will be considered as
//module base path during execution.
- if (!(clientModuleType == MODULE_TYPE.UNNAMED
- && serviceModuletype == MODULE_TYPE.UNNAMED)) {
- copyJarsToModuleBase(clientModuleType, clientJarPath,
- serviceModuletype, serviceJarPath);
+ if (!(cModuleType == MODULE_TYPE.UNNAMED
+ && sModuletype == MODULE_TYPE.UNNAMED)) {
+ copyJarsToModuleBase(cModuleType, cJarPath, M_BASE_PATH);
+ copyJarsToModuleBase(sModuletype, sJarPath, M_BASE_PATH);
}
- System.out.println("Started executing java client with required"
+ System.out.format("%nExecuting java client with required"
+ " custom service in class/module path.");
- String moduleName
- = getClientModuleName(clientModuleType, clientJarPath);
- Path moduleBasePath = (clientModuleType != MODULE_TYPE.UNNAMED
- || serviceModuletype != MODULE_TYPE.UNNAMED)
- ? EXPLICIT_MODULE_BASE_PATH : null;
- StringBuilder classPath
- = getClassPath(clientModuleType, clientJarPath,
- serviceModuletype, serviceJarPath);
- OutputAnalyzer output = ProcessTools.executeTestJava(
- getJavaCommand(moduleBasePath, classPath, moduleName,
- MAIN_CLASS, VM_ARGS))
- .outputTo(System.out)
- .errorTo(System.out);
-
- if (output.getExitValue() != 0) {
- if (expectedFailure != null
- && output.getOutput().contains(expectedFailure)) {
- System.out.println("PASS: Test is expected to fail here.");
- System.out.println("------------------------------------");
- } else {
- throw new RuntimeException("Unexpected failure occured.");
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace(System.out);
- result = false;
+ String mName = getModuleName(cModuleType, cJarPath,
+ C_PKG);
+ Path cmBasePath = (cModuleType != MODULE_TYPE.UNNAMED
+ || sModuletype != MODULE_TYPE.UNNAMED) ? M_BASE_PATH : null;
+ String cPath = buildClassPath(cModuleType, cJarPath, sModuletype,
+ sJarPath);
+ output = ProcessTools.executeTestJava(
+ getJavaCommand(cmBasePath, cPath, mName, MAIN, VM_ARGS,
+ args)).outputTo(System.out).errorTo(System.out);
} finally {
- //clean module path so that the modulepath can only hold
+ //clean module path so that the modulepath can hold only
//the required jars for next run.
- cleanModuleBasePath();
+ cleanModuleBasePath(M_BASE_PATH);
+ System.out.println("--------------------------------------------");
}
-
- return (expectedResult == result);
+ return output;
}
- //Decide the pre-generated client/service jar path for a given module type.
- private static Path findJarPath(boolean service, MODULE_TYPE moduleType,
- boolean addMetaInfDescriptor, boolean dependsOnServiceModule) {
+ /**
+ * Decide the pre-generated client/service jar path for each test case
+ * based on client/service module type.
+ */
+ @Override
+ public Path findJarPath(boolean service, MODULE_TYPE moduleType,
+ boolean addMetaDesc, boolean dependsOnServiceModule) {
if (service) {
if (moduleType == MODULE_TYPE.EXPLICIT) {
- if (addMetaInfDescriptor) {
- return MODULAR_SERVICE_WITH_DESCRIPTOR_JAR;
+ if (addMetaDesc) {
+ return MS_WITH_DESCR_JAR;
} else {
- return MODULAR_SERVICE_JAR;
+ return MS_JAR;
}
} else {
- if (addMetaInfDescriptor) {
- return REGULAR_SERVICE_WITH_DESCRIPTOR_JAR;
+ if (addMetaDesc) {
+ return S_WITH_DESCRIPTOR_JAR;
} else {
- return REGULAR_SERVICE_JAR;
+ return S_JAR;
}
}
} else {
if (moduleType == MODULE_TYPE.EXPLICIT) {
if (dependsOnServiceModule) {
- return MODULAR_CLIENT_JAR;
+ return MC_JAR;
} else {
- return MODULAR_CLIENT_AUTO_DEPEND_JAR;
+ return MC_DEPENDS_ON_AUTO_SERVICE_JAR;
}
} else {
- return REGULAR_CLIENT_JAR;
+ return C_JAR;
}
}
}
- //Copy pre-generated jar files to the base module path based on module type.
- private static void copyJarsToModuleBase(MODULE_TYPE clientModuleType,
- Path modularClientJarPath, MODULE_TYPE serviceModuletype,
- Path modularServiceJarPath) throws IOException {
-
- if (EXPLICIT_MODULE_BASE_PATH != null) {
- Files.createDirectories(EXPLICIT_MODULE_BASE_PATH);
- }
- if (clientModuleType != MODULE_TYPE.UNNAMED) {
- Path clientArtifactName = EXPLICIT_MODULE_BASE_PATH.resolve(
- modularClientJarPath.getFileName());
- System.out.println(String.format("Copy client jar path: '%s'"
- + " to module base path: %s", modularClientJarPath,
- clientArtifactName));
- Files.copy(modularClientJarPath, clientArtifactName);
- }
- if (serviceModuletype != MODULE_TYPE.UNNAMED) {
- Path serviceArtifactName = EXPLICIT_MODULE_BASE_PATH.resolve(
- modularServiceJarPath.getFileName());
- System.out.println(String.format("Copy service jar path: '%s'"
- + " to module base path: %s", modularServiceJarPath,
- serviceArtifactName));
- Files.copy(modularServiceJarPath, serviceArtifactName);
- }
- }
-
- //Pre-compile and generate the jar files required to run this test.
- private static boolean createArtifacts() {
-
- boolean done = true;
- try {
- VM_ARGS.put("-Duser.language=", "en");
- VM_ARGS.put("-Duser.region", "US");
- VM_ARGS.put("-Djava.security.auth.login.config=",
- (CLIENT_SRC_DIR.resolve(CLIENT_PKG).resolve("jaas.conf")
- .toRealPath().toString()));
-
- done = CompilerUtils.compile(SERVICE_SRC_DIR, SERVICE_BUILD_DIR);
- done &= CompilerUtils.compile(SERVICE_SRC_DIR,
- SERVICE_META_BUILD_DIR);
- done &= CompilerUtils.compile(CLIENT_SRC_DIR, CLIENT_BUILD_DIR);
- done &= createMetaInfServiceDescriptor(META_SERVICE_DESCRIPTOR,
- SERVICE_IMPL);
- //Generate regular/modular jars with(out) META-INF
- //service descriptor
- generateJar(true, MODULE_TYPE.EXPLICIT, MODULAR_SERVICE_JAR,
- SERVICE_BUILD_DIR, false);
- generateJar(true, MODULE_TYPE.EXPLICIT,
- MODULAR_SERVICE_WITH_DESCRIPTOR_JAR,
- SERVICE_META_BUILD_DIR, false);
- generateJar(true, MODULE_TYPE.UNNAMED, REGULAR_SERVICE_JAR,
- SERVICE_BUILD_DIR, false);
- generateJar(true, MODULE_TYPE.UNNAMED,
- REGULAR_SERVICE_WITH_DESCRIPTOR_JAR,
- SERVICE_META_BUILD_DIR, false);
- //Generate regular/modular(depends on explicit/auto service)
- //jars for client
- generateJar(false, MODULE_TYPE.EXPLICIT, MODULAR_CLIENT_JAR,
- CLIENT_BUILD_DIR, true);
- generateJar(false, MODULE_TYPE.EXPLICIT,
- MODULAR_CLIENT_AUTO_DEPEND_JAR, CLIENT_BUILD_DIR, false);
- generateJar(false, MODULE_TYPE.UNNAMED,
- REGULAR_CLIENT_JAR, CLIENT_BUILD_DIR, false);
-
- System.out.println(String.format(
- "Artifacts generated successfully? '%s'", done));
- } catch (IOException e) {
- e.printStackTrace(System.out);
- done = false;
- }
- return done;
- }
-
- //Generate modular/regular jar based on module type.
- private static void generateJar(boolean service, MODULE_TYPE moduleType,
- Path jarFile, Path compilePath, boolean depends)
- throws IOException {
-
- ModuleDescriptor moduleDescriptor = null;
- if (service) {
- moduleDescriptor = generateModuleDescriptor(service, moduleType,
- SERVICE_MODULE_NAME, SERVICE_PKG,
- LOGIN_SERVICE_INTERFACE, SERVICE_IMPL, null,
- REQUIRED_MODULES, depends);
- } else {
- moduleDescriptor = generateModuleDescriptor(service,
- moduleType, CLIENT_MODULE_NAME, CLIENT_PKG,
- LOGIN_SERVICE_INTERFACE, null, SERVICE_MODULE_NAME,
- REQUIRED_MODULES, depends);
- }
- if (moduleDescriptor != null) {
- System.out.println(String.format(
- "Creating Modular jar file '%s'", jarFile));
- } else {
- System.out.println(String.format(
- "Creating regular jar file '%s'", jarFile));
- }
- JarUtils.createJarFile(jarFile, compilePath);
- if (moduleDescriptor != null) {
- Path dir = Files.createTempDirectory("tmp");
- Path mi = dir.resolve("module-info.class");
- try (OutputStream out = Files.newOutputStream(mi)) {
- ModuleInfoWriter.write(moduleDescriptor, out);
- }
- JarUtils.updateJarFile(jarFile, dir);
- }
-
- }
-
- //Construct class path argument value.
- private static StringBuilder getClassPath(MODULE_TYPE clientModuleType,
- Path clientJarPath, MODULE_TYPE serviceModuletype,
- Path serviceJarPath) throws IOException {
-
- StringBuilder classPath = new StringBuilder();
- classPath.append((clientModuleType == MODULE_TYPE.UNNAMED)
- ? (clientJarPath.toRealPath().toString()
- + File.pathSeparatorChar) : "");
- classPath.append((serviceModuletype == MODULE_TYPE.UNNAMED)
- ? serviceJarPath.toRealPath().toString() : "");
- return classPath;
- }
-
- //Construct client modulename to run the client. It is fixed for explicit
- //module type while it is same as jar file name for automated module type.
- private static String getClientModuleName(MODULE_TYPE clientModuleType,
- Path clientJarPath) {
-
- String jarFileName = clientJarPath.toFile().getName();
- return (clientModuleType == MODULE_TYPE.EXPLICIT)
- ? CLIENT_MODULE_NAME
- : ((clientModuleType == MODULE_TYPE.AUTO)
- ? jarFileName.substring(
- 0, jarFileName.indexOf(JAR_EXTN)) : "");
- }
-
- //Delete all the files inside the base module path.
- private static void cleanModuleBasePath() {
-
- Arrays.asList(EXPLICIT_MODULE_BASE_PATH.toFile().listFiles())
- .forEach(f -> {
- System.out.println("delete " + f);
- f.delete();
- });
- }
-
}
< prev index next >