No worries. Better spread the word than not doing anything. Thanks, Caspar!
On Wed, Apr 11, 2012 at 9:58 AM, Caspar MacRae <ear...@gmail.com> wrote: > > 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 > > -- -- 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