blob: b79b16ac05af2f8411dc9fcbd5660b569ff67704 [file] [log] [blame]
/*
* Copyright (c) 2021 Contributors to the Eclipse Foundation. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.ts.run;
import com.sun.javatest.Status;
import com.sun.ts.lib.harness.ExecTSTestCmd;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static org.junit.jupiter.api.Assertions.fail;
public class EmbeddedRunnerITest {
@Test
public void test() {
ExecTSTestCmd cmd = new ExecTSTestCmd();
System.getProperties().entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + "=" + entry.getValue()));
List<String> arguments = new ArrayList<>();
arguments.addAll(getEnvOptions());
arguments.addAll(getJavaOptions());
arguments.addAll(getTestOptions());
PrintWriter log = new PrintWriter(new OutputStreamWriter(System.err));
PrintWriter ref = new PrintWriter(new OutputStreamWriter(System.out));
try {
Status status = cmd.run(arguments.toArray(String[]::new), log, ref);
if (!status.isPassed()) {
fail(status.getReason());
}
} finally {
log.flush();
ref.flush();
}
}
List<String> getEnvOptions() {
return List.of(
"-v",
"CLASSPATH=" + getClassPath(),
"DISPLAY=:0.0",
"HOME=" + System.getProperty("user.home"),
"TMP=" + System.getProperty("java.io.tmpdir"),
"windir=",
"SYSTEMROOT=");
}
List<String> getJavaOptions() {
List<String> javaOptions = List.of(
System.getProperty("java.home") + "/bin/java",
"-Dcts.tmp=" + System.getProperty("java.io.tmpdir"),
"-Djava.util.logging.config.file=" + System.getProperty("glassfish.home") + "/glassfish/domains/domain1/config/logging.properties",
"-Dtest.ejb.stateful.timeout.wait.seconds=180 ",
"-Ddeliverable.class=com.sun.ts.lib.deliverable.cts.CTSDeliverable",
"--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED",
"--add-opens=java.base/sun.net.www.protocol.jrt=ALL-UNNAMED",
"--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.util=ALL-UNNAMED",
"--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED",
"--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED")
;
if (System.getProperty("maven.tck.debug") != null && !System.getProperty("maven.tck.debug").isEmpty()) {
javaOptions = new ArrayList<>(javaOptions);
javaOptions.add("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=9009");
}
return javaOptions;
}
List<String> getTestOptions() {
String basedir = System.getProperty("basedir");
return List.of(
"com.sun.ts.tests.common.vehicle.VehicleClient",
"-p", basedir + "/src/test/resources/tstest.jte",
"-t", "add",
"-vehicle", "ejbembed"
);
}
String getClassPath() {
String glassfishVersion = System.getProperty("glassfish.version");
String localRepository = System.getProperty("localRepository");
Path originalEjbJar = Paths.get(localRepository + "/org/glassfish/main/tests/tck/ejb-lite-basic/" + glassfishVersion + "/ejb-lite-basic-" + glassfishVersion + ".jar");
Path copiedEjbJar = Paths.get(System.getProperty("tck.home") + "/ejbembed_vehicle_ejb.jar");
try {
Files.copy(originalEjbJar, copiedEjbJar, REPLACE_EXISTING);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
return String.join(":", List.of(
localRepository + "/org/glassfish/main/tests/tck/tsharness/" + glassfishVersion + "/tsharness-" + glassfishVersion + ".jar",
localRepository + "/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.jar",
System.getProperty("glassfish.home") + "/glassfish/lib/embedded/glassfish-embedded-static-shell.jar",
copiedEjbJar.toString()
));
}
}