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

Reply via email to