You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by "Ellis, Scott" <SE...@harris.com.INVALID> on 2018/10/11 21:20:56 UTC

Running integration tests twice against different webapp configurations

Hi,

I have a project that builds a webapp and runs integration tests against it using the failsafe plugin and the jetty-maven-plugin.

That is, I use the jetty-maven-plugin to start jetty in the pre-integration-test phase, run the tests, then shut jetty down in the post-integration-test phase.

Now, my web app can have an entirely different configuration in addition to the existing one, so I need to start jetty with a new config and run a new suite of tests, while maintaining all the existing functionality.

So what I really want to do it run these phases twice:

pre-integration-test
integration-test
post-integration-test

First I want to run them with the my webapp configured the old way, and then run the same phases again with my webapp configured the new way.

Any advice on how to do this? The configurations can be set with system properties. The problem is how to run those phases twice in that order.

Thanks for any insight you can offer,
Scott

Re: [SUSPICIOUS] Re: Running integration tests twice against different webapp configurations

Posted by Paul Hammant <pa...@hammant.org>.
You're explicitly calling stop() on both Jetty instances ... (pass or fail)
and not just letting it fall through to the Shutdown hook which is static ?


On Sat, Oct 13, 2018 at 1:31 AM Ellis, Scott <SE...@harris.com.invalid>
wrote:

> Thank you Thomas! The parallel solution worked  or me. And thanks for the
> other replies too.
>
> For the record, the second jetty instance must use the run-forked goal,
> because  the ShutdownMonitor thread in jetty is declared static. A design
> flaw in my opinion. Trying to run a second jetty instance in the same vm
> fails with error "ShutdownMonitor already started,"  even with a different
> key and port.
>
> Thanks,
> Scott
>
> -----Original Message-----
> From: Thomas Broyer [mailto:t.broyer@gmail.com]
> Sent: Friday, October 12, 2018 2:34 AM
> To: Maven Users List <us...@maven.apache.org>
> Subject: [SUSPICIOUS] Re: Running integration tests twice against
> different webapp configurations
>
> Alternatively, if possible, you could possibly run the app with both
> configurations in parallel (two executions of jetty-maven-plugin in
> pre-integration-test and post-integration-test phase, using different
> ports), and run you tests twice, for each app / port (two executions of
> failsafe at integration-test phase)
>
> On Fri, Oct 12, 2018 at 8:44 AM Anders Hammar <an...@hammar.net> wrote:
>
> > I'd say you need two modules; one for each IT setup. Each module is a
> > Maven project and will then run the integration tests. The actual
> > integration test code could then be in a third module and you declare
> > a dependency on that artifact.
> >
> > /Anders
> >
> > On Thu, Oct 11, 2018 at 11:21 PM Ellis, Scott
> > <SELLIS06@harris.com.invalid
> > >
> > wrote:
> >
> > > Hi,
> > >
> > > I have a project that builds a webapp and runs integration tests
> > > against it using the failsafe plugin and the jetty-maven-plugin.
> > >
> > > That is, I use the jetty-maven-plugin to start jetty in the
> > > pre-integration-test phase, run the tests, then shut jetty down in
> > > the post-integration-test phase.
> > >
> > > Now, my web app can have an entirely different configuration in
> > > addition to the existing one, so I need to start jetty with a new
> > > config and run a new suite of tests, while maintaining all the
> existing functionality.
> > >
> > > So what I really want to do it run these phases twice:
> > >
> > > pre-integration-test
> > > integration-test
> > > post-integration-test
> > >
> > > First I want to run them with the my webapp configured the old way,
> > > and then run the same phases again with my webapp configured the new
> way.
> > >
> > > Any advice on how to do this? The configurations can be set with
> > > system properties. The problem is how to run those phases twice in
> that order.
> > >
> > > Thanks for any insight you can offer, Scott
> > >
> >
>

RE: [SUSPICIOUS] Re: Running integration tests twice against different webapp configurations

Posted by "Ellis, Scott" <SE...@harris.com.INVALID>.
Thank you Thomas! The parallel solution worked  or me. And thanks for the other replies too.

For the record, the second jetty instance must use the run-forked goal, because  the ShutdownMonitor thread in jetty is declared static. A design flaw in my opinion. Trying to run a second jetty instance in the same vm fails with error "ShutdownMonitor already started,"  even with a different key and port.

Thanks,
Scott

-----Original Message-----
From: Thomas Broyer [mailto:t.broyer@gmail.com] 
Sent: Friday, October 12, 2018 2:34 AM
To: Maven Users List <us...@maven.apache.org>
Subject: [SUSPICIOUS] Re: Running integration tests twice against different webapp configurations

Alternatively, if possible, you could possibly run the app with both configurations in parallel (two executions of jetty-maven-plugin in pre-integration-test and post-integration-test phase, using different ports), and run you tests twice, for each app / port (two executions of failsafe at integration-test phase)

On Fri, Oct 12, 2018 at 8:44 AM Anders Hammar <an...@hammar.net> wrote:

> I'd say you need two modules; one for each IT setup. Each module is a 
> Maven project and will then run the integration tests. The actual 
> integration test code could then be in a third module and you declare 
> a dependency on that artifact.
>
> /Anders
>
> On Thu, Oct 11, 2018 at 11:21 PM Ellis, Scott 
> <SELLIS06@harris.com.invalid
> >
> wrote:
>
> > Hi,
> >
> > I have a project that builds a webapp and runs integration tests 
> > against it using the failsafe plugin and the jetty-maven-plugin.
> >
> > That is, I use the jetty-maven-plugin to start jetty in the 
> > pre-integration-test phase, run the tests, then shut jetty down in 
> > the post-integration-test phase.
> >
> > Now, my web app can have an entirely different configuration in 
> > addition to the existing one, so I need to start jetty with a new 
> > config and run a new suite of tests, while maintaining all the existing functionality.
> >
> > So what I really want to do it run these phases twice:
> >
> > pre-integration-test
> > integration-test
> > post-integration-test
> >
> > First I want to run them with the my webapp configured the old way, 
> > and then run the same phases again with my webapp configured the new way.
> >
> > Any advice on how to do this? The configurations can be set with 
> > system properties. The problem is how to run those phases twice in that order.
> >
> > Thanks for any insight you can offer, Scott
> >
>

Re: Running integration tests twice against different webapp configurations

Posted by Thomas Broyer <t....@gmail.com>.
Alternatively, if possible, you could possibly run the app with both
configurations in parallel (two executions of jetty-maven-plugin in
pre-integration-test and post-integration-test phase, using different
ports), and run you tests twice, for each app / port (two executions of
failsafe at integration-test phase)

On Fri, Oct 12, 2018 at 8:44 AM Anders Hammar <an...@hammar.net> wrote:

> I'd say you need two modules; one for each IT setup. Each module is a Maven
> project and will then run the integration tests. The actual integration
> test code could then be in a third module and you declare a dependency on
> that artifact.
>
> /Anders
>
> On Thu, Oct 11, 2018 at 11:21 PM Ellis, Scott <SELLIS06@harris.com.invalid
> >
> wrote:
>
> > Hi,
> >
> > I have a project that builds a webapp and runs integration tests against
> > it using the failsafe plugin and the jetty-maven-plugin.
> >
> > That is, I use the jetty-maven-plugin to start jetty in the
> > pre-integration-test phase, run the tests, then shut jetty down in the
> > post-integration-test phase.
> >
> > Now, my web app can have an entirely different configuration in addition
> > to the existing one, so I need to start jetty with a new config and run a
> > new suite of tests, while maintaining all the existing functionality.
> >
> > So what I really want to do it run these phases twice:
> >
> > pre-integration-test
> > integration-test
> > post-integration-test
> >
> > First I want to run them with the my webapp configured the old way, and
> > then run the same phases again with my webapp configured the new way.
> >
> > Any advice on how to do this? The configurations can be set with system
> > properties. The problem is how to run those phases twice in that order.
> >
> > Thanks for any insight you can offer,
> > Scott
> >
>

Re: Running integration tests twice against different webapp configurations

Posted by Anders Hammar <an...@hammar.net>.
I'd say you need two modules; one for each IT setup. Each module is a Maven
project and will then run the integration tests. The actual integration
test code could then be in a third module and you declare a dependency on
that artifact.

/Anders

On Thu, Oct 11, 2018 at 11:21 PM Ellis, Scott <SE...@harris.com.invalid>
wrote:

> Hi,
>
> I have a project that builds a webapp and runs integration tests against
> it using the failsafe plugin and the jetty-maven-plugin.
>
> That is, I use the jetty-maven-plugin to start jetty in the
> pre-integration-test phase, run the tests, then shut jetty down in the
> post-integration-test phase.
>
> Now, my web app can have an entirely different configuration in addition
> to the existing one, so I need to start jetty with a new config and run a
> new suite of tests, while maintaining all the existing functionality.
>
> So what I really want to do it run these phases twice:
>
> pre-integration-test
> integration-test
> post-integration-test
>
> First I want to run them with the my webapp configured the old way, and
> then run the same phases again with my webapp configured the new way.
>
> Any advice on how to do this? The configurations can be set with system
> properties. The problem is how to run those phases twice in that order.
>
> Thanks for any insight you can offer,
> Scott
>

Re: Running integration tests twice against different webapp configurations

Posted by Paul Hammant <pa...@hammant.org>.
There's Cuppa which is super cool and allows to control such things to a
very fine level.

https://github.com/cuppa-framework/cuppa/

It is not clear that Cuppa has multi-year life though. I wish it did.

On Thu, Oct 11, 2018 at 10:21 PM Ellis, Scott <SE...@harris.com.invalid>
wrote:

> Hi,
>
> I have a project that builds a webapp and runs integration tests against
> it using the failsafe plugin and the jetty-maven-plugin.
>
> That is, I use the jetty-maven-plugin to start jetty in the
> pre-integration-test phase, run the tests, then shut jetty down in the
> post-integration-test phase.
>
> Now, my web app can have an entirely different configuration in addition
> to the existing one, so I need to start jetty with a new config and run a
> new suite of tests, while maintaining all the existing functionality.
>
> So what I really want to do it run these phases twice:
>
> pre-integration-test
> integration-test
> post-integration-test
>
> First I want to run them with the my webapp configured the old way, and
> then run the same phases again with my webapp configured the new way.
>
> Any advice on how to do this? The configurations can be set with system
> properties. The problem is how to run those phases twice in that order.
>
> Thanks for any insight you can offer,
> Scott
>