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 < [email protected]> 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 <[email protected]>: > > > 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 <[email protected]> > > 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.MockedSessionScopedBeanAcrossM > > 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.MockedRequestScopedBeanWithInj > > 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.testcontrol.uc014. > > TestServiceNoLabelTest > > > » Deployment > > > AlternativeServiceTest.org.apache.deltaspike.test.testcontrol.uc015. > > AlternativeServiceTest > > > » Deployment > > > TestServiceLabelYTest.org.apache.deltaspike.test.testcontrol.uc016. > > TestServiceLabelYTest > > > » Deployment > > > TestServiceLabelBTest.resultB » AmbiguousResolution There is more > than > > > one Bea... > > > TestServiceNoLabelTest.org.apache.deltaspike.test.testcontrol.uc020. > > TestServiceNoLabelTest > > > » Deployment > > > TestServiceTestLabelATest.org.apache.deltaspike.test. > > testcontrol.uc020.TestServiceTestLabelATest > > > » Deployment > > > > > > > > > > > > On Mon, Apr 16, 2018 at 1:33 AM, Gerhard Petracek < > > > [email protected]> 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 <[email protected]>: > > >> > > >> > 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 < > > >> > [email protected]> 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 <[email protected]>: > > >> > > > > >> > > > "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 < > > >> > > > [email protected]> 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 < > [email protected] > > >: > > >> > > > > > > >> > > > > > 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 > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > > > >
