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 > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > > >