Skip to content

Commit 23fba70

Browse files
committed
Testsuite: arquillian glassfish container 2.1.2: make asadmin executable (now configurable)
1 parent 2d5dcd9 commit 23fba70

File tree

4 files changed

+37
-8
lines changed

4 files changed

+37
-8
lines changed

build/ftest-base/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
<arquillian.container.home />
2424
<arquillian.container.distribution />
2525
<arquillian.container.configuration />
26+
<!-- Relative path to a file that should be made "executable" when the container is started by the arquillian container. -->
27+
<arquillian.container.linux.executepermission.file />
2628
<arquillian.container.uninstall>true</arquillian.container.uninstall>
2729
<arquillian.container.vmargs>-Xmx768m -Darquillian.debug=${arquillian.debug}
2830
</arquillian.container.vmargs>
@@ -230,6 +232,10 @@
230232
<arquillian.container.home>${project.build.directory}/glassfish7</arquillian.container.home>
231233
<arquillian.container.distribution>org.glassfish.main.distributions:glassfish:zip:${version.glassfish}
232234
</arquillian.container.distribution>
235+
<!-- Relative path to a file that should be made "executable" when the container is started by the arquillian container.
236+
Here it is the "asadmin" script (https://github.com/OmniFish-EE/arquillian-container-glassfish/pull/9) -->
237+
<arquillian.container.linux.executepermission.file>glassfish7/glassfish/bin/asadmin
238+
</arquillian.container.linux.executepermission.file>
233239
</properties>
234240

235241
<dependencies>

build/resources/src/main/java/org/arquillian/warp/ftest/configuration/IntegrationTestConfiguration.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class IntegrationTestConfiguration implements DroneConfiguration<Integrat
2727
private String containerHome;
2828
private String containerDistribution;
2929
private String containerConfiguration;
30+
private String containerLinuxExecutePermissionFile;
3031
private Boolean containerUninstall;
3132
private Boolean debug;
3233

@@ -53,6 +54,16 @@ public String getContainerHome() {
5354
return containerHome;
5455
}
5556

57+
/**
58+
* If the arquillian container adapter calls a launcher script for starting the container, this file must have the "execute" permisson on linux environments.
59+
* This property must contain the relative path (subdir of "containerConfiguration").
60+
*
61+
* @return Relative path to the file that should be marked as "executable" if the test environment is not Windows.
62+
*/
63+
public String getContainerLinuxExecutePermissionFile() {
64+
return containerLinuxExecutePermissionFile;
65+
}
66+
5667
/**
5768
* Set the flag that the container was installed from distribution
5869
*/

build/resources/src/main/java/org/arquillian/warp/ftest/installation/ContainerInstaller.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,23 @@ public void unpackContainerDistribution(@Observes InstallContainer event) {
8080
log.info(String.format("The container distribution '%s' was installed into '%s'", distribution,
8181
unpackDestination.getAbsolutePath()));
8282

83-
//Test: make "asadmin" executable.
84-
File fileAsadmin = new File(unpackDestination.getAbsolutePath() + "/glassfish7/glassfish/bin/asadmin");
85-
if (fileAsadmin.exists()) {
86-
log.info(String.format("making '%s' executable.", fileAsadmin.getAbsoluteFile()));
87-
fileAsadmin.setExecutable(true);
88-
}
89-
else {
90-
log.info("No glassfish installation.");
83+
// If we are running on a linux environment, maybe a launcher script that is required by the arquillian container plugin must be executable.
84+
String launcherScript = configuration.get().getContainerLinuxExecutePermissionFile();
85+
if (launcherScript != null && launcherScript.trim().length() > 0) {
86+
// Do this only on non-Windows-OS.
87+
if (!System.getProperty("os.name").toLowerCase().startsWith("windows")) {
88+
File fileAsadmin = new File(unpackDestination.getAbsolutePath(), launcherScript);
89+
if (fileAsadmin.exists()) {
90+
log.info(String.format("Preparing container: setting execute permisson for '%s'.", fileAsadmin.getAbsoluteFile()));
91+
fileAsadmin.setExecutable(true);
92+
}
93+
else {
94+
log.warning(String.format("Wrong configuration: Could not find file '%s'.", fileAsadmin.getAbsoluteFile()));
95+
}
96+
}
97+
else {
98+
log.info("Preparing container: No linux environment, skipping step.");
99+
}
91100
}
92101

93102
if (!containerHome.exists()) {

build/resources/src/main/resources/arquillian.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
<property name="containerConfiguration">${arquillian.container.configuration}</property>
6767
<!-- true if the container should be uninstalled after test when it was installed from distribution -->
6868
<property name="containerUninstall">${arquillian.container.uninstall}</property>
69+
<!-- If the arquillian container adapter calls a launcher script for starting the container, this file must have the "execute" permisson on linux environments.
70+
Configure the path relative to the subdir of "arquillian.container.configuration". -->
71+
<property name="containerLinuxExecutePermissionFile">${arquillian.container.linux.executepermission.file}</property>
6972
</extension>
7073

7174
</arquillian>

0 commit comments

Comments
 (0)