Ok, that's where I saw it! (Sorry for the spam, I should have clicked through on the links you provided - cue red face)
On 11 April 2012 08:52, <general-requ...@lists.ops4j.org> wrote: > Send general mailing list submissions to > general@lists.ops4j.org > > To subscribe or unsubscribe via the World Wide Web, visit > http://lists.ops4j.org/mailman/listinfo/general > or, via email, send a message with subject or body 'help' to > general-requ...@lists.ops4j.org > > You can reach the person managing the list at > general-ow...@lists.ops4j.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of general digest..." > > > Today's Topics: > > 1. Re: Debugging pax exam tests (Caspar MacRae) > 2. Re: Debugging pax exam tests (Toni Menzel) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 11 Apr 2012 08:41:58 +0100 > From: Caspar MacRae <ear...@gmail.com> > To: general@lists.ops4j.org > Subject: Re: Debugging pax exam tests > Message-ID: > <cahfah6frs4dzs+pqbn4duyqcjgzvykvjs4wb-c4gz0d32fv...@mail.gmail.com > > > Content-Type: text/plain; charset="utf-8" > > Hi Holly, > > I can't remember where but there's some documentation that shows how to > launch the test container from a main method - if you add your > @Configuration method and Gogo shell bundles you can get an interactive > handle on the test (it doesn't run any tests but AFAIK launches exactly the > same). > > > import static org.ops4j.pax.exam.OptionUtils.combine; > import static org.ops4j.pax.exam.spi.PaxExamRuntime.createContainer; > import static org.ops4j.pax.exam.spi.PaxExamRuntime.createTestSystem; > import static > com.matterhorn.test.integration.pax.exam.GogoOption.gogoShell; > > // ... > public static void main(String[] args) throws TimeoutException, > IOException { > createContainer( > createTestSystem( > combine(new MyIntegrationTest().config(), > gogoShell()) > )).start(); > } > > @Configuration > public Option[] config() > { > return new Option[]{ /* ... */}; > } > // ... > > > // With gogoShell() method coming from a helper class: > > public final class GogoOption { > > public static final String DEFAULT_VERSION = "0.10.0"; > > private GogoOption() {} > > > public static Option gogoShell(String version) > { > final String gid = "org.apache.felix"; > return composite( > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.runtime").version(version), > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.shell").version(version), > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.command").version(version) > ); > } > > public static Option gogoShell() > { > return gogoShell(DEFAULT_VERSION); > } > } > > > A bit late but might be useful. > > > cheers, > Caspar > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Fri, 6 Apr 2012 14:30:36 +0200 > > From: Toni Menzel <toni.men...@rebaze.com> > > To: General OPS4J <general@lists.ops4j.org> > > Subject: Re: Debugging pax exam tests > > Message-ID: > > < > caejgzhqwrtm2o0bpjm40019pekrw+mv8e3pvflwbs+4ozvm...@mail.gmail.com > > > > > Content-Type: text/plain; charset="iso-8859-1" > > > > Hey Holly, > > > > well sure, for interactive tests (how i'd call it) we've used a scenario > > where we just stop within test execution and debug things using a remote > > shell or any other means. > > Instead of halting standard tests, you can also use a feature known as > > "serverMode". This may sounds silly, but exactly does what you want: > > It does not shutdown the framework automatically. A good example is this > > [1] > > > > This is a demo on how we actually used the Pax Exam DSL to creating a > OSGi > > environment used as a normal container, that you just start. In this case > > you won't get the helper bundles installed automatically. > > To get the idea on whats really going on, just compare the two factory > > methods defaultTestSystemOptions() vs defaultServerSystemOptions() in > [2]. > > See, much less defaults you don't care about when not really injecting > test > > bundles anyway. > > > > Not sure on how deep you've went with Pax Exam so far, you really want to > > understand the concepts described in [1]. Otherwise the examples i > > mentioned before might not make sense immediately (speaking of the > plumbing > > API vs. porcelain API. You want to understand plumbing cause its really > > useful when creating new usecases other than automatic testing). > > > > Hope this helps ? > > > > [1] > > > > > https://github.com/tonit/Learn-PaxExam/blob/master/lesson-servermode/src/main/java/org/ops4j/pax/exam/servermode/SimpleServer.java > > > > [2] > > > > > https://github.com/ops4j/org.ops4j.pax.exam2/blob/master/core/pax-exam-spi/src/main/java/org/ops4j/pax/exam/spi/PaxExamRuntime.java > > > > [3] https://github.com/tonit/Learn-PaxExam > > > > Happy Easter Holidays, > > Toni > > > > On Thu, Apr 5, 2012 at 12:41 AM, Holly Cummins < > > holly.k.cumm...@googlemail.com> wrote: > > > > > Hi Toni, > > > > > > Good question. I realised I usually do use the NativeContainer, which > may > > > be why I never noticed the trick about re-using the downloaded bundles > > and > > > configuration until recently! In either case, though, what's usually > most > > > useful to me is an OSGi console, rather than an attached debugger. > > Thinking > > > about it more, I suppose I could use a debugger to suspend the test and > > > then telnet in to an Equinox console if I have my options set > correctly. > > Is > > > that the sort of approach you'd recommend, or is there something > simpler? > > > > > > > > > On Wed, Apr 4, 2012 at 9:18 PM, Toni Menzel <toni.men...@rebaze.com > > >wrote: > > > > > >> Hi Holly, > > >> Just a quick reply, did you consider using NativeContainer ? Just > > because > > >> it simplifies debugging really. > > >> On general approaches, i will reply in detail tomorrow. (Soccer now ;) > > >> Cheers, > > >> Toni > > >> > > >> On Wed, Apr 4, 2012 at 9:57 PM, Holly Cummins < > > >> holly.k.cumm...@googlemail.com> wrote: > > >> > > >>> Hello, > > >>> > > >>> When running pax-exam tests, I find most of my failures are caused by > > >>> bundles failing to start for one reason or another. I have two > > strategies > > >>> for figuring out the issues, but I don't think either is quite what > I'm > > >>> supposed to be doing: > > >>> > > >>> (1) Exhaustive assertion approach: In my test code, I add assertions > > >>> that all of the bundles I care about are started. If a bundle isn't > > >>> started, I try and start it and use the error message as the message > > for a > > >>> test failure. This makes for tests with very clear failure messages, > > but it > > >>> means writing a lot of boilerplate code. If I forget to add an > > assertion > > >>> for a problem bundle, my system is still a black box, and I need ... > > >>> > > >>> ... (2) Sneaky backdoor console approach: Often, what I really want > to > > >>> do is just open a console to the test framework and have a good > browse > > of > > >>> what's started and what's not and which packages and services are > > >>> available. In these cases, I find the temporary folder pax-runner is > > using > > >>> and fire up a console using a command like > > >>> > > >>> java -jar > > bundles/org.eclipse.osgi_3.5.1.R35x_v20090827.jar > > >>> -console -configuration equinox/ > > >>> > > >>> This makes it really easy to diagnose what's gone wrong in a failing > > >>> system, but it doesn't feel like I'm using the pax tools as intended. > > >>> > > >>> Am I missing some elegant debugging technique that everyone else > using > > >>> pax-exam knows about? In other words, is there a cleaner way to > > produce a > > >>> dump of which bundles failed to resolve for technique (1), or to > easily > > >>> bring up a console of the test environment for technique (2) using > > proper > > >>> pax-runner, rather than just ferreting out pax-runner's temporary > > folders > > >>> and using them directly? > > >>> > > >>> Thanks, > > >>> Holly > > >>> > > >>> _______________________________________________ > > >>> general mailing list > > >>> general@lists.ops4j.org > > >>> http://lists.ops4j.org/mailman/listinfo/general > > >>> > > >>> > > >> > > >> > > >> -- > > >> -- > > >> Toni Menzel | Founder | Rebaze GmbH > > >> toni.men...@rebaze.com | www.rebaze.com > > >> > > >> > > >> > > >> _______________________________________________ > > >> general mailing list > > >> general@lists.ops4j.org > > >> http://lists.ops4j.org/mailman/listinfo/general > > >> > > >> > > > > > > _______________________________________________ > > > general mailing list > > > general@lists.ops4j.org > > > http://lists.ops4j.org/mailman/listinfo/general > > > > > > > > > > > > -- > > -- > > Toni Menzel | Founder | Rebaze GmbH > > toni.men...@rebaze.com | www.rebaze.com > > -------------- next part -------------- > > An HTML attachment was scrubbed... > > URL: < > > > http://lists.ops4j.org/pipermail/general/attachments/20120406/9593dc1c/attachment-0001.html > > > > > > > ------------------------------ > > > > _______________________________________________ > > general mailing list > > general@lists.ops4j.org > > http://lists.ops4j.org/mailman/listinfo/general > > > > > > End of general Digest, Vol 82, Issue 4 > > ************************************** > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://lists.ops4j.org/pipermail/general/attachments/20120411/5996ca07/attachment-0001.html > > > > ------------------------------ > > Message: 2 > Date: Wed, 11 Apr 2012 09:52:40 +0200 > From: Toni Menzel <toni.men...@rebaze.com> > To: General OPS4J <general@lists.ops4j.org> > Subject: Re: Debugging pax exam tests > Message-ID: > <caejgzht+g93dmu0st4+enobnqewep3d+bes_p-y-jadqnge...@mail.gmail.com > > > Content-Type: text/plain; charset="iso-8859-1" > > Correct! And thats almost the exact thing described here: > > https://github.com/tonit/Learn-PaxExam/blob/master/lesson-servermode/src/main/java/org/ops4j/pax/exam/servermode/SimpleServer.java > if you need a one-class example. > > On Wed, Apr 11, 2012 at 9:41 AM, Caspar MacRae <ear...@gmail.com> wrote: > > > > > Hi Holly, > > > > I can't remember where but there's some documentation that shows how to > > launch the test container from a main method - if you add your > > @Configuration method and Gogo shell bundles you can get an interactive > > handle on the test (it doesn't run any tests but AFAIK launches exactly > the > > same). > > > > > > import static org.ops4j.pax.exam.OptionUtils.combine; > > import static org.ops4j.pax.exam.spi.PaxExamRuntime.createContainer; > > import static org.ops4j.pax.exam.spi.PaxExamRuntime.createTestSystem; > > import static > > com.matterhorn.test.integration.pax.exam.GogoOption.gogoShell; > > > > // ... > > public static void main(String[] args) throws TimeoutException, > > IOException { > > createContainer( > > createTestSystem( > > combine(new MyIntegrationTest().config(), > > gogoShell()) > > )).start(); > > } > > > > @Configuration > > public Option[] config() > > { > > return new Option[]{ /* ... */}; > > } > > // ... > > > > > > // With gogoShell() method coming from a helper class: > > > > public final class GogoOption { > > > > public static final String DEFAULT_VERSION = "0.10.0"; > > > > private GogoOption() {} > > > > > > public static Option gogoShell(String version) > > { > > final String gid = "org.apache.felix"; > > return composite( > > > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.runtime").version(version), > > > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.shell").version(version), > > > > > mavenBundle().groupId(gid).artifactId("org.apache.felix.gogo.command").version(version) > > ); > > } > > > > public static Option gogoShell() > > { > > return gogoShell(DEFAULT_VERSION); > > } > > } > > > > > > A bit late but might be useful. > > > > > > cheers, > > Caspar > > > > > > > >> ---------------------------------------------------------------------- > >> > >> Message: 1 > >> Date: Fri, 6 Apr 2012 14:30:36 +0200 > >> From: Toni Menzel <toni.men...@rebaze.com> > >> To: General OPS4J <general@lists.ops4j.org> > >> Subject: Re: Debugging pax exam tests > >> Message-ID: > >> < > >> caejgzhqwrtm2o0bpjm40019pekrw+mv8e3pvflwbs+4ozvm...@mail.gmail.com> > >> Content-Type: text/plain; charset="iso-8859-1" > >> > >> > >> Hey Holly, > >> > >> well sure, for interactive tests (how i'd call it) we've used a scenario > >> where we just stop within test execution and debug things using a remote > >> shell or any other means. > >> Instead of halting standard tests, you can also use a feature known as > >> "serverMode". This may sounds silly, but exactly does what you want: > >> It does not shutdown the framework automatically. A good example is this > >> [1] > >> > >> This is a demo on how we actually used the Pax Exam DSL to creating a > OSGi > >> environment used as a normal container, that you just start. In this > case > >> you won't get the helper bundles installed automatically. > >> To get the idea on whats really going on, just compare the two factory > >> methods defaultTestSystemOptions() vs defaultServerSystemOptions() in > [2]. > >> See, much less defaults you don't care about when not really injecting > >> test > >> bundles anyway. > >> > >> Not sure on how deep you've went with Pax Exam so far, you really want > to > >> understand the concepts described in [1]. Otherwise the examples i > >> mentioned before might not make sense immediately (speaking of the > >> plumbing > >> API vs. porcelain API. You want to understand plumbing cause its really > >> useful when creating new usecases other than automatic testing). > >> > >> Hope this helps ? > >> > >> [1] > >> > >> > https://github.com/tonit/Learn-PaxExam/blob/master/lesson-servermode/src/main/java/org/ops4j/pax/exam/servermode/SimpleServer.java > >> > >> [2] > >> > >> > https://github.com/ops4j/org.ops4j.pax.exam2/blob/master/core/pax-exam-spi/src/main/java/org/ops4j/pax/exam/spi/PaxExamRuntime.java > >> > >> [3] https://github.com/tonit/Learn-PaxExam > >> > >> Happy Easter Holidays, > >> Toni > >> > >> On Thu, Apr 5, 2012 at 12:41 AM, Holly Cummins < > >> holly.k.cumm...@googlemail.com> wrote: > >> > >> > Hi Toni, > >> > > >> > Good question. I realised I usually do use the NativeContainer, which > >> may > >> > be why I never noticed the trick about re-using the downloaded bundles > >> and > >> > configuration until recently! In either case, though, what's usually > >> most > >> > useful to me is an OSGi console, rather than an attached debugger. > >> Thinking > >> > about it more, I suppose I could use a debugger to suspend the test > and > >> > then telnet in to an Equinox console if I have my options set > >> correctly. Is > >> > that the sort of approach you'd recommend, or is there something > >> simpler? > >> > > >> > > >> > On Wed, Apr 4, 2012 at 9:18 PM, Toni Menzel <toni.men...@rebaze.com > >> >wrote: > >> > > >> >> Hi Holly, > >> >> Just a quick reply, did you consider using NativeContainer ? Just > >> because > >> >> it simplifies debugging really. > >> >> On general approaches, i will reply in detail tomorrow. (Soccer now > ;) > >> >> Cheers, > >> >> Toni > >> >> > >> >> On Wed, Apr 4, 2012 at 9:57 PM, Holly Cummins < > >> >> holly.k.cumm...@googlemail.com> wrote: > >> >> > >> >>> Hello, > >> >>> > >> >>> When running pax-exam tests, I find most of my failures are caused > by > >> >>> bundles failing to start for one reason or another. I have two > >> strategies > >> >>> for figuring out the issues, but I don't think either is quite what > >> I'm > >> >>> supposed to be doing: > >> >>> > >> >>> (1) Exhaustive assertion approach: In my test code, I add assertions > >> >>> that all of the bundles I care about are started. If a bundle isn't > >> >>> started, I try and start it and use the error message as the message > >> for a > >> >>> test failure. This makes for tests with very clear failure messages, > >> but it > >> >>> means writing a lot of boilerplate code. If I forget to add an > >> assertion > >> >>> for a problem bundle, my system is still a black box, and I need ... > >> >>> > >> >>> ... (2) Sneaky backdoor console approach: Often, what I really want > to > >> >>> do is just open a console to the test framework and have a good > >> browse of > >> >>> what's started and what's not and which packages and services are > >> >>> available. In these cases, I find the temporary folder pax-runner is > >> using > >> >>> and fire up a console using a command like > >> >>> > >> >>> java -jar > >> bundles/org.eclipse.osgi_3.5.1.R35x_v20090827.jar > >> >>> -console -configuration equinox/ > >> >>> > >> >>> This makes it really easy to diagnose what's gone wrong in a failing > >> >>> system, but it doesn't feel like I'm using the pax tools as > intended. > >> >>> > >> >>> Am I missing some elegant debugging technique that everyone else > using > >> >>> pax-exam knows about? In other words, is there a cleaner way to > >> produce a > >> >>> dump of which bundles failed to resolve for technique (1), or to > >> easily > >> >>> bring up a console of the test environment for technique (2) using > >> proper > >> >>> pax-runner, rather than just ferreting out pax-runner's temporary > >> folders > >> >>> and using them directly? > >> >>> > >> >>> Thanks, > >> >>> Holly > >> >>> > >> >>> _______________________________________________ > >> >>> general mailing list > >> >>> general@lists.ops4j.org > >> >>> http://lists.ops4j.org/mailman/listinfo/general > >> >>> > >> >>> > >> >> > >> >> > >> >> -- > >> >> -- > >> >> Toni Menzel | Founder | Rebaze GmbH > >> >> toni.men...@rebaze.com | www.rebaze.com > >> >> > >> >> > >> >> > >> >> _______________________________________________ > >> >> general mailing list > >> >> general@lists.ops4j.org > >> >> http://lists.ops4j.org/mailman/listinfo/general > >> >> > >> >> > >> > > >> > _______________________________________________ > >> > general mailing list > >> > general@lists.ops4j.org > >> > http://lists.ops4j.org/mailman/listinfo/general > >> > > >> > > >> > >> > >> -- > >> -- > >> Toni Menzel | Founder | Rebaze GmbH > >> toni.men...@rebaze.com | www.rebaze.com > >> -------------- next part -------------- > >> An HTML attachment was scrubbed... > >> URL: < > >> > http://lists.ops4j.org/pipermail/general/attachments/20120406/9593dc1c/attachment-0001.html > >> > > >> > >> ------------------------------ > >> > >> > >> _______________________________________________ > >> general mailing list > >> general@lists.ops4j.org > >> http://lists.ops4j.org/mailman/listinfo/general > >> > >> > >> End of general Digest, Vol 82, Issue 4 > >> ************************************** > >> > > > > > > _______________________________________________ > > general mailing list > > general@lists.ops4j.org > > http://lists.ops4j.org/mailman/listinfo/general > > > > > > > -- > -- > Toni Menzel | Founder | Rebaze GmbH > toni.men...@rebaze.com | www.rebaze.com > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://lists.ops4j.org/pipermail/general/attachments/20120411/a67e9113/attachment.html > > > > ------------------------------ > > _______________________________________________ > general mailing list > general@lists.ops4j.org > http://lists.ops4j.org/mailman/listinfo/general > > > End of general Digest, Vol 82, Issue 7 > ************************************** >
_______________________________________________ general mailing list general@lists.ops4j.org http://lists.ops4j.org/mailman/listinfo/general