you are welcome!

@all:
i just pushed further uc-tests (esp. uc017 illustrates the constellation
discussed in this thread)

regards,
gerhard


http://www.irian.at

Your JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache
MyFaces, DeltaSpike and OpenWebBeans

2018-04-16 21:20 GMT+02:00 Stephen More <stephen.m...@gmail.com>:

> Ah, now my tests pass.
>
> Thanks for all your help.
>
> On Mon, Apr 16, 2018 at 2:50 PM, Gerhard Petracek <
> gerhard.petra...@gmail.com> wrote:
>
> > hi stephen,
> >
> > if you have an alternative bean, you need to extend the original one or
> > implement all interfaces to keep the same types. (= std. cdi rules)
> > in your case TestServiceLabelAProducer and TestServiceLabelBProducer need
> > to extend DefaultTestServiceProducer.
> >
> > the labeled alternative config for your labels is:
> >
> > labeledAlternatives[testLabelA].org.apache.deltaspike.test.testcontrol.
> > uc020.DefaultTestServiceProducer=org.apache.deltaspike.test.
> > testcontrol.uc020.TestServiceLabelAProducer
> > labeledAlternatives[b].org.apache.deltaspike.test.testcontrol.uc020.
> > DefaultTestServiceProducer=org.apache.deltaspike.test.testcontrol.uc020.
> > TestServiceLabelBProducer
> >
> > as mentioned earlier "you need to replace the producer-class and not the
> > beans created by the producer"
> >
> > @everybody reading this thread later on:
> > uc020 is the private/external example from stephen and not part of our
> > test-suite, however, i'll add a corresponding uc-test to have a reference
> > for similar questions.
> >
> > regards,
> > gerhard
> >
> >
> >
> > http://www.irian.at
> >
> > Your JavaEE powerhouse -
> > JavaEE Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache
> > MyFaces, DeltaSpike and OpenWebBeans
> >
> > 2018-04-16 20:14 GMT+02:00 Stephen More <stephen.m...@gmail.com>:
> >
> > > My bad for copy paste, I did not see that I had DefaultTestService
> > > instantiated in each producer. -Fixed ( BAD stephen )
> > > I removed qualifiers.
> > >
> > > I think my apache-deltaspike.properties is configure properly - is it ?
> > > I think my Alternate Producers are now correct - are they ?
> > >
> > > I still think there is something that I am not comprehending because
> the
> > > tests are still failing.
> > >
> > >
> > >
> > >
> > > On Mon, Apr 16, 2018 at 12:15 PM, Gerhard Petracek <
> > > gerhard.petra...@gmail.com> wrote:
> > >
> > > > hi stephen,
> > > >
> > > > @#1:
> > > > (by design) ds-test-control always uses/tests the whole
> > > > application(/module+deps.) and the test-classpath the test is located
> > in.
> > > > you added a constellation in the test-classpath which violates the
> > rules
> > > of
> > > > cdi -> as you can see (in the logs), you caused an
> > > > AmbiguousResolutionException because [1] and [2] lead to 2 beans of
> the
> > > > same type (and qualifiers).
> > > > that are std./plain cdi-rules and isn't related to any kind of
> > > alternative
> > > > bean/s.
> > > > since the test-classpath isn't isolated per test (because you test
> your
> > > > application as a whole), all tests will fail in case you violate
> rules
> > > > defined by cdi.
> > > >
> > > > in this case you sometimes see diff. exceptions (as the last
> > exception),
> > > > because in our test-suite (to test ds-test-control itself) we have
> some
> > > > consistency checks e.g. in @AfterClass callbacks.
> > > > due to that you see e.g. an IllegalStateException instead of an
> > > > AmbiguousResolutionException at the very end (but the first issue was
> > > > always an AmbiguousResolutionException).
> > > > in your own application it would/should be always just one exception
> in
> > > > case you violate cdi-rules (in this case the
> > > AmbiguousResolutionException).
> > > >
> > > > @#2:
> > > > i answered that already (following the std. cdi-rule/s you need to
> > > replace
> > > > the producer-class and not the beans created by the producer).
> > > >
> > > > @"#3":
> > > > you don't need 3 qualifiers for 3 producers for the test you shared.
> > > > you need
> > > >  - @Exclude (or @Vetoed or @Typed() or nothing with cdi 1.1+ and
> > > > bean-discovery-mode="annotated") for DefaultTestService, because you
> > > have
> > > > DefaultTestServiceProducer which creates beans of type TestService020
> > (=
> > > > std. cdi rules)
> > > >  - @Alternative for your alternative producer (which should replace
> > > > DefaultTestServiceProducer) (= std. cdi rules)
> > > >  - a label to bind alternative-producer-x to test-x (+ the config for
> > it
> > > in
> > > > an active config-source like apache-deltaspike.properties)
> > > >
> > > > most is std. cdi and really easier than you (might) think.
> > > >
> > > > regards,
> > > > gerhard
> > > >
> > > > [1]
> > > > https://github.com/mores/deltaspike/blob/altProduces/
> > > > deltaspike/modules/test-control/impl/src/test/java/
> > > > org/apache/deltaspike/test/testcontrol/uc020/
> > DefaultTestServiceProducer.
> > > > java
> > > > [2]
> > > > https://github.com/mores/deltaspike/blob/altProduces/
> > > > deltaspike/modules/test-control/impl/src/test/java/
> > > > org/apache/deltaspike/test/testcontrol/uc020/DefaultTestService.java
> > > >
> > > >
> > > >
> > > > http://www.irian.at
> > > >
> > > > Your JavaEE powerhouse -
> > > > JavaEE Consulting, Development and
> > > > Courses in English and German
> > > >
> > > > Professional Support for Apache
> > > > MyFaces, DeltaSpike and OpenWebBeans
> > > >
> > > > 2018-04-16 16:21 GMT+02:00 Stephen More <stephen.m...@gmail.com>:
> > > >
> > > > > Ok, I updated my code, I had to add 3 Qualifiers to fix all other
> > > tests.
> > > > >
> > > > > I now have 3 producers.
> > > > >
> > > > > I think it should be working as is but I still see:
> > > > >
> > > > >   TestServiceLabelBTest.resultB:44 expected:<[result-b]> but
> > > > > was:<[default-result]>
> > > > >   TestServiceTestLabelATest.resultA:44 expected:<[result-a]> but
> > > > > was:<[default-result]>
> > > > >
> > > > >
> > > > >
> > > > > On Mon, Apr 16, 2018 at 8:22 AM, Stephen More <
> > stephen.m...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > Usually I work on multiple tasks at a time, and I might not
> > > communicate
> > > > > as
> > > > > > well as I should. I will try to be a little more verbose.
> > > > > >
> > > > > > Before I added DefaultTestServiceProducer to uc020, mvn clean
> > install
> > > > > > was working as expected "Tests run: 65, Failures: 0, Errors: 0,
> > > > Skipped:
> > > > > 0"
> > > > > >
> > > > > > By simply adding DefaultTestServiceProducer to uc020 I did not
> > expect
> > > > to
> > > > > > get "Tests run: 53, Failures: 6, Errors: 22, Skipped: 0"
> > > > > >
> > > > > > 1. At this point I am no longer focusing on getting my uc020 to
> > pass,
> > > > but
> > > > > > rather what the heck did I just do.....what caused this ? Is
> > > something
> > > > > else
> > > > > > bigger going on that will cause my use case to fail anyway ?
> > > > > >
> > > > > > 2. In parallel I am also working on a private branch to get
> > > Alternate
> > > > > > Producers working....( again not working as expected ).
> > > > > >
> > > > > > I am at a loss to explain what is going on in 1, and 2 I think
> > should
> > > > be
> > > > > > working, but is not.
> > > > > >
> > > > > >
> > > > > > Why did my DefaultTestServiceProducer create all this havoc ?
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Failed tests:
> > > > > >   InterceptedBeanTest.classLevelInterception:52
> > > > > >   InterceptedBeanTest.methodLevelInterception:60
> > > > > >   TestServiceLabelYTest.resultY:44 expected:<[result-y]> but
> > > > > > was:<[default-result]>
> > > > > >   TestServiceTestLabelXTest.resultX:44 expected:<[result-x]> but
> > > > > > was:<[default-result]>
> > > > > >   LabeledServiceTest.resultLbl:45 expected:<[result-lbl]> but
> > > > > > was:<[alternative-result]>
> > > > > >   TestServiceLabelXTest.resultX:43 expected:<result-[x]> but
> > > > > > was:<result-[y]>
> > > > > > Tests in error:
> > > > > >   MockedRequestScopedBeanTest.org.apache.deltaspike.test.
> > > > > > testcontrol.mock.uc001.MockedRequestScopedBeanTest » Deployment
> > > > > >   MockedSessionScopedBeanAcrossMethodsTest.org.apache.
> > > > > > deltaspike.test.testcontrol.mock.uc003.MockedSessionScopedBe
> > > anAcrossM
> > > > > ethodsTest
> > > > > > » Deployment
> > > > > >   MockedProducedBeanTest.org.apache.deltaspike.test.
> > > > > > testcontrol.mock.uc005.MockedProducedBeanTest » Deployment
> > > > > >   MockedTypedBeanTest.org.apache.deltaspike.test.
> > > > testcontrol.mock.uc008.
> > > > > MockedTypedBeanTest
> > > > > > » Deployment
> > > > > >   MockedTypedProducedBeanTest.org.apache.deltaspike.test.
> > > > > > testcontrol.mock.uc009.MockedTypedProducedBeanTest » Deployment
> > > > > >   MockedRequestScopedBeanWithInjectionTest.org.apache.
> > > > > > deltaspike.test.testcontrol.mock.uc012.MockedRequestScopedBe
> > > anWithInj
> > > > > ectionTest
> > > > > > » Deployment
> > > > > >   MockedTypedProducedBeanTest.org.apache.deltaspike.test.
> > > > > > testcontrol.mock.uc013.MockedTypedProducedBeanTest » Deployment
> > > > > >   MockedTypedProducedBeanTest.org.apache.deltaspike.test.
> > > > > > testcontrol.mock.uc014.MockedTypedProducedBeanTest » Deployment
> > > > > > org.apache.deltaspike.test.testcontrol.uc001.
> > > > > > RequestAndSessionScopePerTestMethodTest.org.apache.
> > > > > > deltaspike.test.testcontrol.uc001.RequestAndSessionScopePerTestM
> > > > > ethodTest
> > > > > >   Run 1: RequestAndSessionScopePerTestMethodTest.org.apache.
> > > > > > deltaspike.test.testcontrol.uc001.RequestAndSessionScopePerTestM
> > > > > ethodTest
> > > > > > » Deployment
> > > > > >   Run 2: RequestAndSessionScopePerTestMethodTest.
> > > > finalCheckAndCleanup:99
> > > > > > IllegalState u...
> > > > > >
> > > > > > org.apache.deltaspike.test.testcontrol.uc002.
> > > > > SessionScopePerTestClassTest.
> > > > > > org.apache.deltaspike.test.testcontrol.uc002.
> > > > > SessionScopePerTestClassTest
> > > > > >   Run 1: SessionScopePerTestClassTest.
> org.apache.deltaspike.test.
> > > > > > testcontrol.uc002.SessionScopePerTestClassTest » Deployment
> > > > > >   Run 2: SessionScopePerTestClassTest.finalCheckAndCleanup:93
> > > > > > IllegalState unexpected i...
> > > > > >
> > > > > >   SessionScopePerTestClassTest.org.apache.deltaspike.test.
> > > > > > testcontrol.uc003.SessionScopePerTestClassTest » Deployment
> > > > > > org.apache.deltaspike.test.testcontrol.uc004.
> > > > > ProjectStageTestControlTest.
> > > > > > org.apache.deltaspike.test.testcontrol.uc004.
> > > > ProjectStageTestControlTest
> > > > > >   Run 1: ProjectStageTestControlTest.org.apache.deltaspike.test.
> > > > > > testcontrol.uc004.ProjectStageTestControlTest » Deployment
> > > > > >   Run 2: ProjectStageTestControlTest>
> > RequestAndSessionScopePerTestM
> > > > > > ethodTest.finalCheckAndCleanup:99 » IllegalState
> > > > > >
> > > > > >   SkipExternalContainerTest.org.apache.deltaspike.test.
> > > > > testcontrol.uc006.SkipExternalContainerTest
> > > > > > » Deployment
> > > > > >   ExtendedTest.org.apache.deltaspike.test.testcontrol.
> > > > uc007.ExtendedTest
> > > > > > » Deployment
> > > > > >   JsfContainerPerTestMethodTest.org.apache.deltaspike.test.
> > > > > > testcontrol.uc010.JsfContainerPerTestMethodTest » Deployment
> > > > > >   InterceptedBeanTest.org.apache.deltaspike.test.
> > testcontrol.uc011.
> > > > > InterceptedBeanTest
> > > > > > » Deployment
> > > > > >   TestServiceNoLabelTest.org.apache.deltaspike.test.testcontr
> > > ol.uc014.
> > > > > TestServiceNoLabelTest
> > > > > > » Deployment
> > > > > >   AlternativeServiceTest.org.apache.deltaspike.test.testcontr
> > > ol.uc015.
> > > > > AlternativeServiceTest
> > > > > > » Deployment
> > > > > >   TestServiceLabelYTest.org.apache.deltaspike.test.testcontro
> > > l.uc016.
> > > > > TestServiceLabelYTest
> > > > > > » Deployment
> > > > > >   TestServiceLabelBTest.resultB » AmbiguousResolution There is
> more
> > > > than
> > > > > > one Bea...
> > > > > >   TestServiceNoLabelTest.org.apache.deltaspike.test.testcontr
> > > ol.uc020.
> > > > > TestServiceNoLabelTest
> > > > > > » Deployment
> > > > > >   TestServiceTestLabelATest.org.apache.deltaspike.test.
> > > > > testcontrol.uc020.TestServiceTestLabelATest
> > > > > > » Deployment
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Mon, Apr 16, 2018 at 1:33 AM, Gerhard Petracek <
> > > > > > gerhard.petra...@gmail.com> wrote:
> > > > > >
> > > > > >> hi stephen,
> > > > > >>
> > > > > >> you only have one producer-class:
> > > > > >> https://github.com/mores/deltaspike/blob/altProduces/deltasp
> > > > > >> ike/modules/test-control/impl/src/test/java/org/apache/
> > > > > >> deltaspike/test/testcontrol/uc020/DefaultTestServiceProducer.
> java
> > > > > >>
> > > > > >> and @Alternative is only present at:
> > > > > >> https://github.com/mores/deltaspike/blob/altProduces/deltasp
> > > > > >> ike/modules/test-control/impl/src/test/java/org/apache/
> > > > > >> deltaspike/test/testcontrol/uc020/TestServiceLabelA.java#L24
> > > > > >> and
> > > > > >> https://github.com/mores/deltaspike/blob/altProduces/deltasp
> > > > > >> ike/modules/test-control/impl/src/test/java/org/apache/
> > > > > >> deltaspike/test/testcontrol/uc020/TestServiceLabelB.java#L24
> > > > > >>
> > > > > >> instead you need an alternative producer-class (to replace
> > > > > >> DefaultTestServiceProducer in your case).
> > > > > >>
> > > > > >> regards,
> > > > > >> gerhard
> > > > > >>
> > > > > >> http://www.irian.at
> > > > > >>
> > > > > >> Your JavaEE powerhouse -
> > > > > >> JavaEE Consulting, Development and
> > > > > >> Courses in English and German
> > > > > >>
> > > > > >> Professional Support for Apache
> > > > > >> MyFaces, DeltaSpike and OpenWebBeans
> > > > > >>
> > > > > >> 2018-04-15 21:02 GMT+02:00 Stephen More <stephen.m...@gmail.com
> >:
> > > > > >>
> > > > > >> > Correct. I have a default producer and 1 alternate producer. I
> > can
> > > > > >> enable
> > > > > >> > the alternate producer by updating beans.xml.
> > > > > >> > I am trying to do the same thing using labeledAlternatives....
> > > > > >> >
> > > > > >> > what changes should be made to META-INF/apache-deltaspike.
> > > > properties
> > > > > >> when
> > > > > >> > using multiple alternate producers ?
> > > > > >> >
> > > > > >> >
> > > > > >> > labeledAlternatives[testLabelX].org.apache.
> > > > > deltaspike.test.testcontrol.
> > > > > >> > uc014.TestService=org.apache.deltaspike.test.testcontrol.
> uc014.
> > > > > >> > TestServiceLabelXProducer
> > > > > >> > labeledAlternatives[y].org.apache.deltaspike.test.
> > > > > >> > testcontrol.uc014.TestService=org.apache.deltaspike.test.
> > > > > >> > testcontrol.uc014.TestServiceLabelYProducer
> > > > > >> >
> > > > > >> >
> > > > > >> > ?
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> >
> > > > > >> > On Sun, Apr 15, 2018 at 1:22 PM, Gerhard Petracek <
> > > > > >> > gerhard.petra...@gmail.com> wrote:
> > > > > >> >
> > > > > >> > > hi stephen,
> > > > > >> > >
> > > > > >> > > as usual with cdi, you need to create an
> alternative-producer
> > (=
> > > > the
> > > > > >> > > producer-bean itself needs to be replaced).
> > > > > >> > >
> > > > > >> > > regards,
> > > > > >> > > gerhard
> > > > > >> > >
> > > > > >> > > http://www.irian.at
> > > > > >> > >
> > > > > >> > > Your JavaEE powerhouse -
> > > > > >> > > JavaEE Consulting, Development and
> > > > > >> > > Courses in English and German
> > > > > >> > >
> > > > > >> > > Professional Support for Apache
> > > > > >> > > MyFaces, DeltaSpike and OpenWebBeans
> > > > > >> > >
> > > > > >> > >
> > > > > >> > >
> > > > > >> > > 2018-04-15 14:41 GMT+02:00 Stephen More <
> > stephen.m...@gmail.com
> > > >:
> > > > > >> > >
> > > > > >> > > > "alternative-bean-x1 (instead of bean-x) in test1
> > > > > >> > > > and alternative-bean-x2  (instead of bean-x) in test2"
> > > > > >> > > >
> > > > > >> > > > Yes, this is exactly what I am going after, unfortunately
> I
> > > have
> > > > > not
> > > > > >> > > gotten
> > > > > >> > > > it to work yet. In my case bean-x comes from a producer.
> > > > > >> > > >
> > > > > >> > > > Not sure if that is my problem so I started working on a
> use
> > > > > case, I
> > > > > >> > > made a
> > > > > >> > > > clone of uc014 -> uc020 ( fixed name collisions in
> > > > > >> > > > apache-deltaspike.properties ) but many other test cases
> > > started
> > > > > to
> > > > > >> > fail
> > > > > >> > > > outside of uc020.  ( https://github.com/mores/
> > > > > >> > > deltaspike/tree/altProduces
> > > > > >> > > > )
> > > > > >> > > >
> > > > > >> > > > Is this a possible bug ?
> > > > > >> > > > -Thanks
> > > > > >> > > >
> > > > > >> > > >
> > > > > >> > > > p.s. when a typo is made in apache-deltaspike.properties
> no
> > > > > warning
> > > > > >> or
> > > > > >> > > > error was thrown that I could easily see
> > > > > >> > > >
> > > > > >> > > >
> > > > > >> > > >
> > > > > >> > > > On Sat, Apr 14, 2018 at 12:18 PM, Gerhard Petracek <
> > > > > >> > > > gerhard.petra...@gmail.com> wrote:
> > > > > >> > > >
> > > > > >> > > > > hi stephen,
> > > > > >> > > > >
> > > > > >> > > > > if your alternative-instance/behavior should be
> different
> > > for
> > > > > >> "every"
> > > > > >> > > > test
> > > > > >> > > > > and you can't use a mock-manager, you need to use a
> > producer
> > > > > (for
> > > > > >> the
> > > > > >> > > > > original bean) and @Specializes it in the
> test-classpath.
> > > > > >> > > > > in your test you change the state of the test-producer
> > with
> > > > > static
> > > > > >> > > > methods
> > > > > >> > > > > (e.g. set a flag or a whole instance which should be
> > > returned
> > > > by
> > > > > >> the
> > > > > >> > > > > test-producer).
> > > > > >> > > > > -> it's std. cdi and/or java - no special concept is
> > needed.
> > > > > >> > > > >
> > > > > >> > > > > if you would like to use alternative-bean-x1 (instead of
> > > > bean-x)
> > > > > >> in
> > > > > >> > > test1
> > > > > >> > > > > and alternative-bean-x2  (instead of bean-x) in test2,
> you
> > > can
> > > > > use
> > > > > >> > > > labeled
> > > > > >> > > > > alternatives (provided by ds > v1.8.1) - see e.g. [1]
> and
> > > [2].
> > > > > >> > > > > it's based on the new AlternativeBeanClassProvider spi
> > > (which
> > > > > you
> > > > > >> > could
> > > > > >> > > > use
> > > > > >> > > > > as well to implement your own concepts) - see e.g. [3].
> > > > > >> > > > >
> > > > > >> > > > > regards,
> > > > > >> > > > > gerhard
> > > > > >> > > > >
> > > > > >> > > > > [1]
> > > > > >> > > > > https://github.com/apache/deltaspike/tree/master/
> > > > > >> > > > deltaspike/modules/test-
> > > > > >> > > > > control/impl/src/test/java/org/apache/deltaspike/test/
> > > > > >> > > testcontrol/uc014
> > > > > >> > > > > [2]
> > > > > >> > > > > https://github.com/apache/deltaspike/tree/master/
> > > > > >> > > > deltaspike/modules/test-
> > > > > >> > > > > control/impl/src/test/java/org/apache/deltaspike/test/
> > > > > >> > > testcontrol/uc015
> > > > > >> > > > > [3]
> > > > > >> > > > > https://github.com/apache/deltaspike/tree/master/
> > > > > >> > > > deltaspike/modules/test-
> > > > > >> > > > > control/impl/src/test/java/org/apache/deltaspike/test/
> > > > > >> > > testcontrol/uc016
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > > >
> > > > > >> > > > > http://www.irian.at
> > > > > >> > > > >
> > > > > >> > > > > Your JavaEE powerhouse -
> > > > > >> > > > > JavaEE Consulting, Development and
> > > > > >> > > > > Courses in English and German
> > > > > >> > > > >
> > > > > >> > > > > Professional Support for Apache
> > > > > >> > > > > MyFaces, DeltaSpike and OpenWebBeans
> > > > > >> > > > >
> > > > > >> > > > > 2018-04-14 15:24 GMT+02:00 Stephen More <
> > > > stephen.m...@gmail.com
> > > > > >:
> > > > > >> > > > >
> > > > > >> > > > > > I have a need to run some unit tests with
> @Alternative -
> > > > > >> > > mockedVersionA
> > > > > >> > > > > > and other tests with @Alternative - mockedVersionB
> > > > > >> > > > > > and other tests with @Alternative - mockedVersionC
> > > > > >> > > > > >
> > > > > >> > > > > > It looks like Arquillian can handle this utilizing
> > > > ShrinkWrap
> > > > > >> and
> > > > > >> > > > > > @Deployment....
> > > > > >> > > > > > addAsManifestResource( "mockedVersionA.xml","beans.
> > xml");
> > > > > >> > > > > > addAsManifestResource( "mockedVersionB.xml","beans.
> > xml");
> > > > > >> > > > > >
> > > > > >> > > > > > Can I achieve the same functionality using
> > CdiTestRunner ?
> > > > > >> > > > > > -Thanks
> > > > > >> > > > > >
> > > > > >> > > > >
> > > > > >> > > >
> > > > > >> > >
> > > > > >> >
> > > > > >>
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to