[hibernate-dev] replace Pax Exam with Docker
Brett Meyer
brett at hibernate.org
Fri Jan 12 08:59:43 EST 2018
Plus, for me, it's more a question of time. I only have a bit available
for open source work these days, and I'd rather spend that knocking out
some of the hibernate-osgi tasks we've had on our plate for a while. I
unfortunately don't have anything left to contribute to Pax Exam itself,
assuming that would even fix the problem.
Even worse, we're barely using the integration tests for anything more
than a simple smoke test at this point, since it seems like every time
we touch it something new goes wrong. Looking for a more *consistent*
solution -- need more confidence in the backbone.
On 1/12/18 8:56 AM, Brett Meyer wrote:
>
> Sorry Gunnar/Sanne, should have clarified this first:
>
> We actually used Arquillian before Pax Exam, and the experience was
> far worse (somewhat of a long story)...
>
> > Pax Exam was just "helping" to deploy/run things in Karaf, so I
> can't imagine using Karaf without the helpers being a walk in the park
>
> That's not actually the case. The way Pax Exam currently runs our
> tests is fundamentally part of the problem. The test code is
> dynamically wrapped in an actual bundle, using something like
> tiny-bundles, and executed *within* the container itself. Pax
> overrides runs with additional probes, overrides logging
> infrastructure, etc. Those nuances can often be the source of many of
> the bugs (there are a ton of classloader implications, etc. -- IIRC,
> this was one area where Arquillian was much, much worse). There are
> some benefits to that setup, but for Hibernate it mainly gets in the way.
>
> It *does* have a "server mode" where tests run outside of the
> container, but I vaguely remember going down that path early on and
> hitting a roadblock. For the life of me, I can't remember the
> specifics. But my pushback here is that ultimately Docker might be
> more preferable, giving us more of a real world scenario to do true
> e2e tests without something else in the middle.
>
> > so I can't imagine using Karaf without the helpers being a walk in
> the park; e.g. having to deal with HTTP operations comes with its own
> baggage {dependencies, complexity, speed, .. } and generally more
> stuff to maintain.
>
> I guess I respectfully disagree with that, but purely due to Karaf
> features. Our features.xml does most of the heavy lifting for us
> w/r/t getting Hibernate provisioned. The same would be true with the
> test harness bundle/feature. REST is simple and out-of-the-box thanks
> to Karaf + CXF or Camel. For other possible routes (Karaf commands),
> we already have code available in our demo/quickstart projects.
>
> > Also: considered contributing to Pax?
>
> Yes, of course. But the fact that numerous Karaf *committers*
> themselves have a long history of built-up frustration on it doesn't
> leave me optimistic. A couple of them had tried to pitch in at one
> point and weren't able to get anywhere.
>
> > but it seems their developers really expect their users to be deeply
> familiar with it all
>
> Absolutely! But again, our struggles also come down to the
> fundamental way Pax Exam works...
>
>
> On 1/12/18 6:27 AM, Sanne Grinovero wrote:
>> +1 to explore alternatives to Pax Exam, but I'd be wary of maintining
>> our own test infrastructure.
>>
>> Pax Exam was just "helping" to deploy/run things in Karaf, so I can't
>> imagine using Karaf without the helpers being a walk in the park; e.g.
>> having to deal with HTTP operations comes with its own baggage
>> {dependencies, complexity, speed, .. } and generally more stuff to
>> maintain.
>>
>> So.. +1 to try out Arquillian or anything else. Or maybe you could
>> start your own tool, but I'd prefer to see it in a separate repository
>> :) e.g. a nice Gradle plugin so maybe you get more people helping?
>>
>> Also: considered contributing to Pax? My personal experience with it
>> has always been a pain but if I had to try identify the reason, it was
>> mostly caused by me being unfamiliar with Karaf and not having good
>> clues to track down the real failure; maybe some minor error reporting
>> improvements could make a big difference to its usability? Just
>> saying, I don't feel like Pax is bad, but it seems their developers
>> really expect their users to be deeply familiar with it all - feels
>> like the typical case in which they could use some feedback and a
>> hand.
>>
>> Thanks,
>> Sanne
>>
>> On 12 January 2018 at 08:22, Gunnar Morling<gunnar at hibernate.org> wrote:
>>> Hi Brett,
>>>
>>> We also had our fair share of frustration with Pax Exam in HV, and I was
>>> (more than once) at the point of dropping it.
>>>
>>> Docker could work, but as you say it's a bit of a heavy dependency, if not
>>> required anyways. Not sure whether I'd like to add this as a prerequisite
>>> for the HV build to be executed. And tests in separate profiles tend to be
>>> "forgotten" in my experience.
>>>
>>> One other approach could be to use Arquillian's OSGi support (see
>>> https://github.com/arquillian/arquillian-container-osgi), did you consider
>>> to use that one as an alternative?
>>>
>>> Cheers,
>>>
>>> --Gunnar
>>>
>>>
>>> 2018-01-12 3:34 GMT+01:00 Brett Meyer<brett at hibernate.org>:
>>>
>>>> <tired-rant>
>>>>
>>>> I'm fed up with Pax Exam and would love to replace it as the
>>>> hibernate-osgi integration test harness. Most of the Karaf committers
>>>> I've been working with hate it more than I do. Every single time we
>>>> upgrade the Karaf version, something less-than-minor in hibernate-osgi,
>>>> upgrade/change dependencies, or attempt to upgrade Pax Exam itself,
>>>> there's some new obfuscated failure. And no matter how much I pray, it
>>>> refuses to let us get to the container logs to figure out what
>>>> happened. Tis a house of cards.
>>>>
>>>> </tired-rant>
>>>>
>>>> One alternative that recently came up elsewhere: use Docker to bootstrap
>>>> the container, hit it with our features.xml, install a test bundle that
>>>> exposes functionality externally (over HTTP, Karaf commands, etc), then
>>>> hit the endpoints and run assertions.
>>>>
>>>> Pros: true "integration test", plain vanilla Karaf, direct access to all
>>>> logs, easier to eventually support and test other containers.
>>>>
>>>> Cons: Need Docker installed for local test runs, probably safer to
>>>> isolate the integration test behind a disabled-by-default Maven profile.
>>>>
>>>> Any gut reactions?
>>>>
>>>> OSGi is fun and I'm not at all bitter,
>>>>
>>>> -Brett-
>>>>
>>>> ;)
>>>>
>>>>
>>>> _______________________________________________
>>>> hibernate-dev mailing list
>>>> hibernate-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
More information about the hibernate-dev
mailing list