Hey Christian,
you're right, I haven't realized that. Also, if some module needed a
custom arquillian conf, Arquillian reads a system property named
"arquillian.xml" which defines the name of the configuration file.
The last thing I can think of for the testsuite root is the Maven
property "user.dir" - the working directory from which mvn was executed.
Ron
On 7.1.2014 17:20, Christian Kaltepoth wrote:
Hey Ron,
I don't think unpacking is necessary. If arquillian.xml is located in
deltaspike/test-utils/src/main/resources, it will be on the classpath for
all integration tests. That's basically the setup we are using for Rewrite
since quite some time and it is working fine. See [1].
I guess you are right regarding the merging of poms and that ${basedir}
won't work because of this. Too bad. So perhaps we should use
java.io.tmpdir for now until we find a better way (if there is any).
Christian
[1]
https://github.com/ocpsoft/rewrite/blob/master/test-harness/src/main/resources/arquillian.xml
2014/1/7 Ron Smeral <[email protected]>
Hi Christian,
the test-utils is in the parent/code/pom.xml as a dependency, but then
still, to get to the arquillian.xml file in the test-utils.jar, it would
need to be unpacked using e.g. dependency:unpack plugin goal.
Regarding basedir, because POMs are merged in Maven to form the Effective
POM, the basedir property always points to the current project, regardless
of the POM in which you reference it.
For example, if -- as you suggest -- there's project P and C, where P is
parent of C, and P contains <root>${basedir}</root>, then for C, the
${root} will contain the base dir of C anyway, not that of P.
The least hacky (but still ugly) way that comes to mind is to pass the
property an absolute path from the shell, as in "mvn clean test
-Droot=$(pwd)". The root property could have a default value of
${java.io.tmpdir}.
Ron
On 7.1.2014 07:51, Christian Kaltepoth wrote:
Hey Ron,
I don't think we will have to copy arquillian.xml using the
resources-plugin. If we add it to src/main/resources of the test-utils
module, it will be on the test classpath for all other modules. I think
this should work fine.
Regarding the testsuite root directory. I think we could use Maven's
${basedir} in the parent pom and store it in a system property. Thoughts?
Christian
2014/1/3 Ron Smeral <[email protected]>
Hi Christian,
looking at the arquillian.xml files, they are 99% the same, the only one
that actually differs (other than whitespace, comments and missing
cdicontainer.version property) is the one in the data module, containing
a
testDatabase configuration for tomee. So, we could have just one
arquillian.xml file somewhere in the testsuite root, copy it over using
resources-plugin, and override it only when necessary.
One minor problem is -- and this is for the container unpacking too --
that to point to the testsuite root, every pom would need to keep a
relative reference to it (e.g. <testsuite.root>../../..</
testsuite.root>),
which is ugly, but doable.
On 3.1.2014 06:26, Christian Kaltepoth wrote:
Hey Ron,
yeah, there are differences between arquillian.xml files. But why? I
don't
see any reason for having different arquillian.xml files between
modules.
Actually the integration test Maven profiles are also located in a
single
parent pom and not in each individual module pom. IMHO we should treat
arquillian.xml the same way. Unless there is a good reason for having
multiple ones.
I agree that we should unpack the container only once. I'm not sure I
like
to use java.io.tmpdir though. It would be nice to have it in the
top-level
"target" directory or something like that. That would ensure that
running
"mvn clean" would also remove the unpacked container.
Christian
2014/1/2 Ron Smeral <[email protected]>
On 2.1.2014 17:55, Christian Kaltepoth wrote:
Hey all,
there are two things I would like to address regarding our integration
test
suite.
1. Currently each module has its own arquillian.xml file. IMHO this
doesn't
make sense. What about using a single arquillian.xml and placing it in
the
test-utils module?
+0, there are minor differences among them currently (though not
sure
if
necessary), and it would make it more difficult to make an individual
modification if there was single arquillian.xml.
2. We have both "managed" and "remote" profiles for some containers.
But
the "managed" profiles (especially Wildfly + Glassfish) require you to
manually download and setup the corresponding container which I would
like
to avoid. I think it would be nicer if the "managed" profiles could do
this
automatically. This would simplify the process of running the tests
locally
before committing and it would also be easier to create CI jobs for
them.
See [1] for an example of a profile which sets up the container
automatically and therefore runs out of the box even in transient CI
environments like Travis [2].
There already is such profile at least for JBoss AS7
(jbossas-build-managed-7) and at this very moment I'm adding such
profile
for WildFly. However, currently there is a minor drawback to the
current
approach -- the container is unpacked for every module and so almost 5
GB
of diskspace is required to run the whole testsuite, which is quite
impractical. It would be nice to have the container unpacked to a
shared
location, e.g. ${java.io.tmpdir}, just as in the ocpsoft rewrite pom
you
linked. I'll try that in the AS7 and WF8 profiles.
Thoughts?
[1] https://github.com/ocpsoft/rewrite/blob/master/pom.xml#L706
[2] https://travis-ci.org/ocpsoft/rewrite/builds/16192940
Christian
--
Ron Smeral
JBoss Quality Engineer
Brno
--
Ron Smeral
JBoss Quality Engineer
Brno
--
Ron Smeral
JBoss Quality Engineer
Brno
--
Ron Smeral
JBoss Quality Engineer
Brno