You could take a look at what Dan and I did for native owb: https://github.com/struberg/arquillian-container-openwebbeans LieGrue, strub
----- Original Message ----- > From: Jonathan Gallimore <[email protected]> > To: [email protected] > Cc: > Sent: Wednesday, October 5, 2011 12:57 AM > Subject: Re: Arquillian adapters > > On Thu, Sep 29, 2011 at 12:13 AM, Jonathan Gallimore < > [email protected]> wrote: > >> >> >> On Thu, Sep 29, 2011 at 12:01 AM, David Blevins > <[email protected]>wrote: >> >>> >>> On Sep 28, 2011, at 3:36 PM, Jonathan Gallimore wrote: >>> >>> > When I hacked up the Remote with zip adapter I intended to >>> > merge it into the remote adapter - along the lines of: check to > see if >>> TomEE >>> > is running on the port specified in arquillian.xml. If it is, just >>> deploy >>> > straight to it. If not, go grab the zip and use that. Does that > sound >>> like a >>> > reasonable idea? >>> >>> Very reasonable. That's what the itests have done for years, the > CDI TCK >>> does and the Java EE TCK setup does. >>> >>> It's pretty easy to have the rule of "if you don't want us > to start a >>> server, make sure a server is started" >>> >> >> Cool, I'll get that done. >> > > I've extended the remote adapter to allow this. If you specify something > like (note the 1.0.0-beta-1 OpenEJB version and no Tomcat version): > > <arquillian > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://jboss.org/schema/arquillian > http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> > <container qualifier="tomee" default="true"> > <configuration> > <property > name="dir">/tmp/arquillian-apache-tomee</property> > <property name="httpPort">9080</property> > <property name="stopPort">9005</property> > <property name="tomcatVersion"></property> > <property > name="openejbVersion">1.0.0-beta-1</property> > </configuration> > </container> > </arquillian> > > if nothing is running on port 9080 we'll download TomEE, unzip it, start it > and use that for the test. > > If you changed the OpenEJB and Tomcat versions to, say: > > <property > name="tomcatVersion">7.0.21</property> > <property > name="openejbVersion">4.0.0-beta-1</property> > > We'd download Tomcat and the OpenEJB.war, set that up, and use that instead. > So we should be able to use this to test against Tomcat 5.5/6 with OpenEJB. > > I quite like this, but it would be great to get any feedback. > > >> >> >>> >>> > That leaves the embedded-with-war adapter as something that might > seem a >>> bit >>> > odd. Currently I can't get it to run correctly, but that might > be >>> something >>> > wrong with my machine. What's people's opinion of this > method? Should we >>> > drop this, or is it a useful adapter to hang on to? >>> >>> My impression is I would never ever advise a user to use it. That > said, >>> it's an absolutely fabulous way for us to test the drop-in-war >>> functionality. Well, almost fabulous... the real world scenario is an >>> existing Tomcat install, not an embedded one. >>> >>> Either way, if we say to people "you can do this and it > works!" having an >>> adapter for it us a must. Especially if we get things to the point > where we >>> can easily reuse the full set of tests on each adapter. At that point > we >>> just need to hook up each adapter with a buildbot builder and suddenly > we >>> have a dreamlike level of testing for the various features we offer. >>> >> >> We shouldn't have any issues getting the tests to run on all the > adapters. >> Worst case we can use Maven profiles and run the tests against the embedded >> adapter by default, and you just switch profile to use the other modes. The >> buildbot builders can then presumably be setup with the necessary profile >> switch in their build. >> >> I was thinking it would be cool to try and extend either the test suite or >> the Arquillian test runner somehow so the test then runs against all the >> adapters in one go. >> >> I was going to do the Maven profile bit first, as that should be reasonably >> straightforward, and then take it from there. >> >> > > I've done some refactoring around the Arquillian test suite, so the tests > now run against both adapters. Currently we have ~6 failures and 2 errors > for both adapters, and it should be the same tests in both cases. We > currently run 82 tests. > > This was a pretty bug refactor - it seemed like things worked well in the > embedded case, because everything is right there on the classpath. Running > remotely a lot of tests failed as they relied on the test or junit being > available from the app being tested. I've separated the inner classes out, > divided things up into packages and tried to move a couple of methods to > trim what would need to be added to the Shrinkwrap archives. We still need > junit in a couple of cases, so in a couple of places we add that in as a > lib. Hope that's all ok. There's probably some duplicate classes we > could > chop out. > > Running the tests can be done by running the test Maven goal in the > arquillian-tomee-tests module. Choosing which adapter to use is done by > enabling a Maven profile. By default we run against the embedded adapter > (arquillian-tomee-embedded). Doing a 'mvn -Parquillian-tomee-remote clean > install' will build and test against the remote adapter. If you're using > an > IDE plugin such as m2e, you should be able to specify the desired Maven > profile in your IDE settings and the tests should run straight from the IDE > (works for me in Eclipse) - please shout if you have trouble, I'll be more > than happy to help! > > Jon >
