You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID> on 2018/06/22 07:03:20 UTC

tomee testing

i am trying to use ApplicationComposer to create some tests.  CDI is 
scanning the classes correctly but i am a little uncertain about how to 
load a test database.

i was going to start by just loading the database as normal as it is a 
copy of production database.  but how do i specify the username and 
password or any other properties that are needed to connect to the db?

@ContainerProperties(@ContainerProperties.Property(name = "mydb", value 
= "jdbc:mysql://localhost:3306/mydb"))

is there a way to specify the resource in an xml file?

another question...is it better to start with Arquillian or 
ApplicationComposer?

Re: tomee testing

Posted by Andy Gumbrecht <ag...@tomitribe.com>.
I use a resources.xml with property replacement syntax value:-default

The default values should be the local db, and these can be overridden by
env, -D and properties for prod.

Andy.

On Fri, 22 Jun 2018, 09:03 Matthew Broadhead,
<ma...@nbmlaw.co.uk.invalid> wrote:

> i am trying to use ApplicationComposer to create some tests.  CDI is
> scanning the classes correctly but i am a little uncertain about how to
> load a test database.
>
> i was going to start by just loading the database as normal as it is a
> copy of production database.  but how do i specify the username and
> password or any other properties that are needed to connect to the db?
>
> @ContainerProperties(@ContainerProperties.Property(name = "mydb", value
> = "jdbc:mysql://localhost:3306/mydb"))
>
> is there a way to specify the resource in an xml file?
>
> another question...is it better to start with Arquillian or
> ApplicationComposer?
>

Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Maybe try adding openejb-javaagent on the test jvm in your test
configuration (and surefire args if it works).


Le dim. 24 juin 2018 14:27, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> if i comment out fetch then it works! hooray!
>          Root<QuoteType> quoteType = cq.from(QuoteType.class);
> //        quoteType.fetch("quoteTypeCategories", JoinType.LEFT);
>
> is there any way to make fetch work or do you think i have a mapping
> error somewhere?  i have never had any problems so far
>
> On 24/06/18 13:58, Matthew Broadhead wrote:
> > i am loading the PU with a producer like
> > @ApplicationScoped
> > public class EntityManagerProducer {
> >
> >     @PersistenceUnit(unitName = "sales")
> >     private EntityManagerFactory entityManagerFactory;
> >
> >     @Produces
> >     @Default
> >     @RequestScoped
> >     public EntityManager create() {
> >         return this.entityManagerFactory.createEntityManager();
> >     }
> >
> >     public void dispose(@Disposes @Default EntityManager entityManager) {
> >         if (entityManager.isOpen()) {
> >             entityManager.close();
> >         }
> >     }
> > }
> >
> > On 24/06/18 13:46, Matthew Broadhead wrote:
> >> i changed
> >> @Descriptors(@Descriptor(name = "persistence.xml", path =
> >> META-INF/persistence.xml"))
> >> to
> >> @Descriptors(@Descriptor(name = "persistence.xml", path =
> >> "src/main/resources/META-INF/persistence.xml"))
> >> and now it is loading the persistence.xml
> >>
> >> i still get the same error.  if i turn logging up to TRACE i get the
> >> below.  is there any way to find the particular mapping might be
> >> causing the problem?
> >>
> >> org.apache.openejb.OpenEJBException: Creating application failed:
> >> /home/matthew/git/case-management/sales/QuoteGeneratorTest:
> >> org.apache.openejb.OpenEJBRuntimeException:
> >> <openjpa-2.4.2-r422266:1777108 fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.: <openjpa-2.4.2-r422266:1777108
> >> fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.
> >>     at
> >>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)
> >>     at
> >>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
> >>     at
> >>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
> >>     at
> >>
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)
> >>     at
> >>
> org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)
> >>     at
> >>
> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)
> >>     at
> >>
> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
> >>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> >>     at
> >>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> >>     at
> >>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> >>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> >>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> >>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> >>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> >>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> >>     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> >>     at
> >>
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
> >>     at
> >>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> >>     at
> >>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
> >>     at
> >>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
> >>     at
> >>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
> >>     at
> >>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
> >> Caused by: org.apache.openejb.OpenEJBException:
> >> org.apache.openejb.OpenEJBRuntimeException:
> >> <openjpa-2.4.2-r422266:1777108 fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.: <openjpa-2.4.2-r422266:1777108
> >> fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.
> >>     at
> >>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
> >>     ... 21 more
> >> Caused by: org.apache.openejb.OpenEJBRuntimeException:
> >> <openjpa-2.4.2-r422266:1777108 fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.
> >>     at
> >>
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)
> >>     at
> >>
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)
> >>     at
> >>
> org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)
> >>     at
> >>
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
> >>     ... 21 more
> >> Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error>
> >> org.apache.openjpa.persistence.PersistenceException: There was an
> >> error when invoking the static newInstance method on the named
> >> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See
> >> the nested exception for details.
> >>     at
> >> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)
> >>     at
> >>
> org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)
> >>     at
> >>
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)
> >>     at
> >>
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)
> >>     at
> >>
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)
> >>     at
> >>
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
> >>     ... 24 more
> >> Caused by: java.lang.IllegalStateException: On a thread without an
> >> initialized context nor a classloader mapping a deployed app
> >>     at
> >>
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)
> >>     at
> >>
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)
> >>     at
> >>
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)
> >>     at
> >>
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)
> >>     at
> >>
> org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)
> >>     at
> >>
> org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)
> >>     at
> >>
> org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)
> >>     at
> >>
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)
> >>     at
> >>
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
> >>     at com.sun.proxy.$Proxy38.toString(Unknown Source)
> >>     at java.lang.String.valueOf(String.java:2994)
> >>     at java.lang.StringBuilder.append(StringBuilder.java:131)
> >>     at java.util.AbstractMap.toString(AbstractMap.java:559)
> >>     at java.text.MessageFormat.subformat(MessageFormat.java:1280)
> >>     at java.text.MessageFormat.format(MessageFormat.java:865)
> >>     at java.text.Format.format(Format.java:157)
> >>     at java.text.MessageFormat.format(MessageFormat.java:841)
> >>     at
> >>
> org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)
> >>     at
> >>
> org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
> >>     at
> >> org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
> >>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
> >>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
> >>     at
> >>
> org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)
> >>     at
> >>
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
> >>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>     at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> >>     at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>     at java.lang.reflect.Method.invoke(Method.java:498)
> >>     at
> >> org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
> >>     at
> >> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
> >>     ... 29 more
> >>
> >> On 24/06/18 13:02, Romain Manni-Bucau wrote:
> >>> mapping error in your model it seems or bad persistence unit
> >>> definition if
> >>> you dont use scanning.
> >>>
> >>> Romain Manni-Bucau
> >>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>> <http://rmannibucau.wordpress.com> | Github
> >>> <https://github.com/rmannibucau> |
> >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>> <
> https://www.packtpub.com/application-development/java-ee-8-high-performance>
>
> >>>
> >>>
> >>>
> >>> Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> thanks.  removing the @Jars helped. it is now injecting CDI bean fine.
> >>>> but now i get OpenJPA NPE on
> >>>> List<QuoteType> quoteTypeList = query.getResultList();
> >>>>
> >>>> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
> >>>> org.apache.openjpa.persistence.PersistenceException: null
> >>>>       at
> >>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
> >>>>       at
> >>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032)
>
> >>>>
> >>>>       at
> >>>>
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382)
>
> >>>>
> >>>>       at
> >>>>
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080)
>
> >>>>
> >>>>       at
> >>>>
> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35)
> >>>>
> >>>>       at
> >>>> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
> >>>>       at
> >>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
> >>>>       at
> >>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
> >>>>       at
> >>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
> >>>>       at
> >>>>
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541)
> >>>>
> >>>>       at
> >>>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
> >>>>       at
> >>>>
> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
> >>>>
> >>>>       at
> >>>>
> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51)
> >>>>
> >>>>       at
> >>>>
> >>>>
> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java)
>
> >>>>
> >>>>       at
> >>>>
> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96)
> >>>>
> >>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>>       at
> >>>>
> >>>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> >>>>
> >>>>       at java.lang.reflect.Method.invoke(Method.java:498)
> >>>>       at
> >>>>
> >>>>
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
>
> >>>>
> >>>>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> >>>>       at
> >>>>
> >>>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>
> >>>>
> >>>>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> >>>>       at
> >>>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> >>>>       at
> >>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> >>>>       at
> >>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> >>>>       at
> >>>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> >>>>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
>
> >>>>
> >>>> Caused by: java.lang.NullPointerException
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
>
> >>>>
> >>>>       at
> >>>>
> >>>>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>
> >>>>
> >>>>       at
> >>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
> >>>>       at
> >>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
> >>>>       ... 45 more
> >>>>
> >>>>
> >>>> On 24/06/18 12:18, Romain Manni-Bucau wrote:
> >>>>> you don't need @Jars for that
> >>>>>
> >>>>> why you get an exception is cause appcomposers knows mysql has no EE
> >>>>> classes so it is excluded from the "find" logic. @Jars means "grab
> >>>>> the
> >>>> jars
> >>>>> matching this prefix and scan them to include them in the deployed
> >>>>> app".
> >>>>>
> >>>>> Romain Manni-Bucau
> >>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> >>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>> https://github.com/rmannibucau> |
> >>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>> <
> >>>>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>
> >>>>>
> >>>>>
> >>>>> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
> >>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>
> >>>>>> i tried adding test scope to pom.xml
> >>>>>> <dependency>
> >>>>>>                <groupId>mysql</groupId>
> >>>>>> <artifactId>mysql-connector-java</artifactId>
> >>>>>> <version>${mysql.connector.version}</version>
> >>>>>>                <scope>test</scope>
> >>>>>>            </dependency>
> >>>>>>
> >>>>>> also added mysql-connector-java-5.1.33.jar to the root of
> >>>>>> src/test/resources but i still get
> >>>>>> java.lang.IllegalArgumentException: mysql not found in classpath
> >>>>>>        at
> >>>>>>
> >>>>>>
> >>>>
> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
>
> >>>>
> >>>>>>        at
> >>>>>>
> >>>>>>
> >>>>
> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
>
> >>>>
> >>>>>>        at
> >>>>>>
> >>>>>>
> >>>>
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)
>
> >>>>
> >>>>>>
> >>>>>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
> >>>>>>> Appcopposer loads classes in the classpath so add it as a test
> >>>>>> dependency.
> >>>>>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
> >>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>
> >>>>>>>> not much luck with arquillian. i am trying ApplicationComposer
> >>>>>>>> again.
> >>>>>>>> now i understand the properties format
> >>>>>>>> @ContainerProperties({ @ContainerProperties.Property(name =
> >>>>>>>> "sales",
> >>>>>>>> value = "new://Resource?type=DataSource"),
> >>>>>>>>             @ContainerProperties.Property(name =
> >>>>>>>> "sales.JdbcDriver",
> >>>> value
> >>>>>>>> = "com.mysql.jdbc.Driver"),
> >>>>>>>>             @ContainerProperties.Property(name = "sales.JdbcUrl",
> >>>> value =
> >>>>>>>> "jdbc:mysql://localhost:3306/sales"),
> >>>>>>>>             @ContainerProperties.Property(name = "sales.Username",
> >>>> value =
> >>>>>>>> "admin"),
> >>>>>>>>             @ContainerProperties.Property(name = "sales.Password",
> >>>> value =
> >>>>>>>> "blahblah") })
> >>>>>>>>
> >>>>>>>> but now i get
> >>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> >>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>         at
> >>>>>>>>
> >>>>>>>>
> >>>>
> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
>
> >>>>
> >>>>>>>>         at
> >>>>>>>>
> >>>>>>>>
> >>>>
> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
>
> >>>>
> >>>>>>>> how to bundle the mysql driver? i tried
> >>>>>>>> @Jars("mysql")
> >>>>>>>>
> >>>>>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
> >>>>>>>>> You need all your tested app needs (this is why classpath
> >>>>>>>>> deploypent
> >>>>>>>>> solutions are easier to maintain).
> >>>>>>>>>
> >>>>>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
> >>>> maven
> >>>>>>>>> based. It can help.
> >>>>>>>>>
> >>>>>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
> >>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>
> >>>>>>>>>> ah ok.  i found
> >>>>>>>>>> .addAsManifestResource(new
> >>>>>> ClassLoaderAsset("META-INF/persistence.xml"),
> >>>>>>>>>> "persistence.xml")
> >>>>>>>>>>
> >>>>>>>>>> in
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>
> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
> >>>>
> >>>>>>>>>> but now i am back to
> >>>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>> qualifiers
> >>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>>>>>> quoteTypeDao,
> >>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>>>>>> Name:null, API
> >>>>>>>>>>
> >>>>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>>>
> >>>>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>
> >>>>>>>>>>          at
> >>>>>>>>>>
> >>>>>>
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>>>
> >>>>>>>>>> so i must have missed a required class somewhere
> >>>>>>>>>>
> >>>>>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
> >>>>>>>>>>> do i need to copy the persistence.xml to
> >>>> src/test/resources/META-INF?
> >>>>>>>>>>> or can i specify its location somewhere in config?
> >>>>>>>>>>>
> >>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml
> >>>>>>>>>>> for
> >>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>>>>>>>> SEVERE - Invalid EjbModule(name=sales,
> >>>>>>>>>>>
> >>>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>
> >>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml
> >>>>>>>>>>> for
> >>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>>>>>>>> SEVERE - Invalid WebModule(name=sales,
> >>>>>>>>>>>
> >>>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>
> >>>>>>>>>>> INFO - Set the 'openejb.validation.output.level' system
> >>>>>>>>>>> property to
> >>>>>>>>>>> VERBOSE for increased validation details.
> >>>>>>>>>>> SEVERE - Unable to deploy collapsed ear in war
> >>>>>>>>>>>
> >>>>
> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> >>>>
> >>>>>>>>>>> org.apache.openejb.config.ValidationFailedException: Module
> >>>>>>>>>>> failed
> >>>>>>>>>>> validation. AppModule(name=sales)
> >>>>>>>>>>>         at
> >>>>>>>>>>>
> >>>>
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>
> >>>>
> >>>>>>>>>>>         at
> >>>>>>>>>>>
> >>>>>>
> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
> >>>>>>
> >>>>>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
> >>>>>>>>>>>> You can but you need to add all the object graph in the
> >>>>>>>>>>>> archive.
> >>>>>> Here
> >>>>>>>>>>>> you
> >>>>>>>>>>>> miss an injection it seems (in your dao?).
> >>>>>>>>>>>>
> >>>>>>>>>>>> Side note: operatesondeployment and naming your archive is not
> >>>>>> needed
> >>>>>>>>>>>> here.
> >>>>>>>>>>>> It is useful when you deploy N > 1 archives.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> >>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>
> >>>>>>>>>>>>> i got the sample configuration from
> >>>>>>>>>>>>>
> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>>>>>>>>>>>
> >>>>>>>> under
> >>>>>>>>>>>>> remote section.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> now my problem is that i can't inject the CDI bean
> >>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException:
> >>>>>>>>>>>>> Api type
> >>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>>>> qualifiers
> >>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>> quoteTypeDao,
> >>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
> >>>>>>>>>>>>> WebBeansType:ENTERPRISE,
> >>>>>>>>>>>>> Name:null, API
> >>>>>>>>>>>>>
> >>>>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>>>
> >>>>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>
> >>>>>>>>>>>>>           at
> >>>>>>>>>>>>>
> >>>>
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>
> >>>>>>>>>>>>>           at
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>
> >>>>
> >>>>>>>>>>>>> i created the @Deployment using
> >>>>>>>>>>>>> @Inject
> >>>>>>>>>>>>>           private QuoteTypeDao quoteTypeDao;
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>           @Deployment(name = "archive")
> >>>>>>>>>>>>>           public static WebArchive war() {
> >>>>>>>>>>>>>               return ShrinkWrap.create(WebArchive.class,
> >>>>>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE,
> >>>>>>>>>>>>> "beans.xml")
> >>>>>>>>>>>>> .addClasses(QuoteTypeDao.class);
> >>>>>>>>>>>>>           }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>           @Test
> >>>>>>>>>>>>>           @OperateOnDeployment("archive")
> >>>>>>>>>>>>>           public void test1() {
> >>>>>>>>>>>>>               Quote quote = new Quote();
> >>>>>>>>>>>>>               Promotion promotion = null;
> >>>>>>>>>>>>>               List<QuoteType> quoteTypeList =
> >>>>>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
> >>>>>>>>>>>>>               System.out.println("Quote type list size: " +
> >>>>>>>>>>>>> quoteTypeList.size());
> >>>>>>>>>>>>>               for (QuoteType quoteType : quoteTypeList) {
> >>>>>>>>>>>>> System.out.println(quoteType.getName());
> >>>>>>>>>>>>>                   // quoteGeneratorDao.generateQuote(quote,
> >>>>>> promotion,
> >>>>>>>>>>>>>                   // quoteType.getQuoteTypeCategories(),
> >>>>>> quoteQuestions,
> >>>>>>>>>>>>>                   // quoteInit, true);
> >>>>>>>>>>>>>                   assertEquals(0, 1);
> >>>>>>>>>>>>>               }
> >>>>>>>>>>>>>               assertEquals(0, 1);
> >>>>>>>>>>>>>           }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> can i not inject a CDI bean into the test using
> >>>>>>>>>>>>> arquillian-tomee-remote?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>> It is not needed at all bit it appears in your stack. If
> >>>>>>>>>>>>>> it is a
> >>>>>>>> copy
> >>>>>>>>>>>>> paste
> >>>>>>>>>>>>>> just drop it ;)
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> >>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> hi, i checked
> >>>>>>>>>>>>>>> http://incubator.apache.org/projects/sirona.html
> >>>>>>>> but i
> >>>>>>>>>>>>>>> couldn't find any documentation.  is sirona a
> >>>>>>>>>>>>>>> requirement for
> >>>>>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
> >>>> tests?
> >>>>>>>>>>>>>>> if so,
> >>>>>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
> >>>>>>>>>>>>>>> <!-- we monitor the test with sirona -->
> >>>>>>>>>>>>>>> <property name="javaagent">
> >>>>>>>>>>>>>>>
> >>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >>>>>>>>>>>>>>> </property>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode
> >>>>>>>>>>>>>>>> is not
> >>>>>>>> safe.
> >>>>>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> thanks i added it using
> >>>>>>>>>>>>>>>>> <property
> >>>>>>>>>>>>>>>>>
> >>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>>>>>>>>>>>>>> but i get these errors (which don't seem to stop
> >>>>>>>>>>>>>>>>> execution)
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> fail to transform
> >>>>>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>>>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
> >>>>>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not
> >>>>>>>>>>>>>>>>> supported
> >>>>>> with
> >>>>>>>>>>>>>>>>> computeFrames option
> >>>>>>>>>>>>>>>>>             at org.apache.sirona.asm.Frame.a(Unknown
> >>>>>>>>>>>>>>>>> Source)
> >>>>>>>>>>>>>>>>>             at
> >>>>>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >>>>>>>>>>>>>>> Source)
> >>>>>>>>>>>>>>>>> SEVERE - Can't create DataSource
> >>>>>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
> >>>>>>>>>>>>>>>>> java/net/URLClassLoader):
> >>>>>>>>>>>>>>>>> attempted  duplicate class definition for name:
> >>>>>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> but this one is a stopper
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>>>>>>>>>>
> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException:
> >>>>>>>>>>>>>>>>> Api
> >>>>>> type
> >>>>>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with
> >>>>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>> qualifiers
> >>>>>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>>>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>>>>>>>>>>>>> quoteTypeDao,
> >>>>>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
> >>>>>> WebBeansType:ENTERPRISE,
> >>>>>>>>>>>>>>>>> Name:null, API
> >>>>>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
> >>>>>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
> >>>>>>>>>>>>>>>
> >>>>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>
> >>>>>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
> >>>>>>>> embedded
> >>>>>>>>>>>>>>>>> tomee.remote.support = true
> >>>>>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
> >>>>>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>>>> You can add it in libs property of arquillian container
> >>>>>> config.
> >>>>>>>>>>>>>>>>>> Just
> >>>>>>>>>>>>>>>>> prefix
> >>>>>>>>>>>>>>>>>> the coords with mvn:.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> It is a multiline property so you can add N libs to
> >>>>>>>>>>>>>>>>>> tomee
> >>>> lib
> >>>>>>>> this
> >>>>>>>>>>>>> way
> >>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> INFO: Downloading
> >>>>>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
> >>>>>>>>>>>>> please
> >>>>>>>>>>>>>>>>>>> wait...
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
> >>>> complaining
> >>>>>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.
> >>>>>>>>>>>>>>>>>>> Please
> >>>> send
> >>>>>>>> the
> >>>>>>>>>>>>>>>>>>> following stack trace and this message to
> >>>>>>>>>>>>>>>>>>> users@tomee.apache.org :
> >>>>>>>>>>>>>>>>>>>
> org.apache.xbean.propertyeditor.PropertyEditorException:
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>> Unable to
> >>>>>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> is there any way to directly bring in the mysql
> >>>>>>>>>>>>>>>>>>> driver from
> >>>>>>>> maven
> >>>>>>>>>>>>>>>>>>> central? or do i need to download manually and put
> >>>>>>>>>>>>>>>>>>> it into
> >>>>>>>>>>>>>>>>>>> src/test/tomee/lib?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write
> >>>>>>>>>>>>>>>>>>>> it in
> >>>> the
> >>>>>>>>>>>>>>>>>>>> final
> >>>>>>>>>>>>>>>>> module
> >>>>>>>>>>>>>>>>>>>> instead of trying to use the parent which will be
> >>>>>>>>>>>>>>>>>>>> executed
> >>>>>>>>>>>>>>>>>>>> before
> >>>>>>>>>>>>> any
> >>>>>>>>>>>>>>>>>>> other
> >>>>>>>>>>>>>>>>>>>> modules.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> If A depends on B which depends on C then write
> >>>>>>>>>>>>>>>>>>>> your tests
> >>>>>> in
> >>>>>>>>>>>>>>>>>>>> A for
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
> >>>>>>>> (potentially
> >>>>>>>>>>>>> using
> >>>>>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> For reference:
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |
> Blog
> >>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau>
> >>>>>>>>>>>>>>>>>>>> | Book
> >>>>>>>>>>>>>>>>>>>> <
> >>>>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>
> >>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
> >>>> case.
> >>>>>>>> can
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
> >>>> everything
> >>>>>>>>>>>>>>>>>>>>> need to
> >>>>>>>>>>>>>>> be
> >>>>>>>>>>>>>>>>>>>>> done through http? looking at
> >>>>>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html
> "Simple
> >>>>>>>>>> Arquilian
> >>>>>>>>>>>>>>> Test"
> >>>>>>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>>>>>> looks as if beans can be injected...
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
> >>>>>>>> instance)
> >>>>>>>>>>>>> in a
> >>>>>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once
> >>>>>>>>>>>>>>>>>>>>> which
> >>>>>> are
> >>>>>>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>> modules
> >>>>>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
> >>>>>>>> project.
> >>>>>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the
> >>>>>>>>>>>>>>>>>>>>>> other
> >>>>>>>>>>>>>>>>>>>>>> ones we
> >>>>>>>>>>>>>>> have)
> >>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The
> >>>>>>>>>>>>>>>>>>>>>> advantage of
> >>>> the
> >>>>>>>>>>>>>>> properties
> >>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt
> >>>>>>>>>>>>>>>>>>>>>> require a
> >>>>>>>> maven
> >>>>>>>>>>>>>>> build
> >>>>>>>>>>>>>>>>>>> but
> >>>>>>>>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> Arquillian is great to test complete
> >>>>>>>>>>>>>>>>>>>>>> application*s* in a
> >>>>>>>> real
> >>>>>>>>>>>>>>> server,
> >>>>>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
> >>>>>>>>>>>>>>>>>>>>>> applications
> >>>>>>>>>>>>> or
> >>>>>>>>>>>>>>>>>>>>>> frameworks, TomEE,
> >>>>>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real
> >>>>>>>>>>>>>>>>>>>>>> app
> >>>>>>>> (single
> >>>>>>>>>>>>>>>>>>> deployment
> >>>>>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will
> >>>>>>>>>>>>>>>>>>>>>> save a
> >>>>>> lot
> >>>>>>>> of
> >>>>>>>>>>>>>>> time.
> >>>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |
> >>>>>>>>>>>>>>>>>>>>>> Blog
> >>>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau>
> |
> >>>> Book
> >>>>>>>>>>>>>>>>>>>>>> <
> >>>>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>
> >>>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create
> >>>>>>>>>>>>>>>>>>>>>>> some
> >>>>>>>> tests.
> >>>>>>>>>>>>> CDI
> >>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
> >>>>>> uncertain
> >>>>>>>>>>>>>>>>>>>>>>> about
> >>>>>>>>>>>>>>> how
> >>>>>>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>>>>>> load a test database.
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> i was going to start by just loading the
> >>>>>>>>>>>>>>>>>>>>>>> database as
> >>>>>>>>>>>>>>>>>>>>>>> normal as
> >>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>> is a
> >>>>>>>>>>>>>>>>>>>>>>> copy of production database. but how do i
> >>>>>>>>>>>>>>>>>>>>>>> specify the
> >>>>>>>>>>>>>>>>>>>>>>> username
> >>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
> >>>>>>>>>>>>>>>>>>>>>>> connect to
> >>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>> db?
> >>>> @ContainerProperties(@ContainerProperties.Property(name =
> >>>>>>>>>>>>> "mydb",
> >>>>>>>>>>>>>>>>>>> value
> >>>>>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml
> >>>>>>>>>>>>>>>>>>>>>>> file?
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> another question...is it better to start with
> >>>> Arquillian
> >>>>>> or
> >>>>>>>>>>>>>>>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>
> >>
> >
> >
> >
>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
if i comment out fetch then it works! hooray!
         Root<QuoteType> quoteType = cq.from(QuoteType.class);
//        quoteType.fetch("quoteTypeCategories", JoinType.LEFT);

is there any way to make fetch work or do you think i have a mapping 
error somewhere?  i have never had any problems so far

On 24/06/18 13:58, Matthew Broadhead wrote:
> i am loading the PU with a producer like
> @ApplicationScoped
> public class EntityManagerProducer {
>
>     @PersistenceUnit(unitName = "sales")
>     private EntityManagerFactory entityManagerFactory;
>
>     @Produces
>     @Default
>     @RequestScoped
>     public EntityManager create() {
>         return this.entityManagerFactory.createEntityManager();
>     }
>
>     public void dispose(@Disposes @Default EntityManager entityManager) {
>         if (entityManager.isOpen()) {
>             entityManager.close();
>         }
>     }
> }
>
> On 24/06/18 13:46, Matthew Broadhead wrote:
>> i changed
>> @Descriptors(@Descriptor(name = "persistence.xml", path = 
>> META-INF/persistence.xml"))
>> to
>> @Descriptors(@Descriptor(name = "persistence.xml", path = 
>> "src/main/resources/META-INF/persistence.xml"))
>> and now it is loading the persistence.xml
>>
>> i still get the same error.  if i turn logging up to TRACE i get the 
>> below.  is there any way to find the particular mapping might be 
>> causing the problem?
>>
>> org.apache.openejb.OpenEJBException: Creating application failed: 
>> /home/matthew/git/case-management/sales/QuoteGeneratorTest: 
>> org.apache.openejb.OpenEJBRuntimeException: 
>> <openjpa-2.4.2-r422266:1777108 fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.: <openjpa-2.4.2-r422266:1777108 
>> fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.
>>     at 
>> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)
>>     at 
>> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
>>     at 
>> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
>>     at 
>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)
>>     at 
>> org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)
>>     at 
>> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)
>>     at 
>> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
>>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>     at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>>     at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>     at 
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>>     at 
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>     at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>>     at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>>     at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>>     at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
>> Caused by: org.apache.openejb.OpenEJBException: 
>> org.apache.openejb.OpenEJBRuntimeException: 
>> <openjpa-2.4.2-r422266:1777108 fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.: <openjpa-2.4.2-r422266:1777108 
>> fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.
>>     at 
>> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
>>     ... 21 more
>> Caused by: org.apache.openejb.OpenEJBRuntimeException: 
>> <openjpa-2.4.2-r422266:1777108 fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.
>>     at 
>> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)
>>     at 
>> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)
>>     at 
>> org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)
>>     at 
>> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
>>     ... 21 more
>> Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error> 
>> org.apache.openjpa.persistence.PersistenceException: There was an 
>> error when invoking the static newInstance method on the named 
>> factory class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See 
>> the nested exception for details.
>>     at 
>> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)
>>     at 
>> org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)
>>     at 
>> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)
>>     at 
>> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)
>>     at 
>> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)
>>     at 
>> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
>>     ... 24 more
>> Caused by: java.lang.IllegalStateException: On a thread without an 
>> initialized context nor a classloader mapping a deployed app
>>     at 
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)
>>     at 
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)
>>     at 
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)
>>     at 
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)
>>     at 
>> org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)
>>     at 
>> org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)
>>     at 
>> org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)
>>     at 
>> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)
>>     at 
>> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
>>     at com.sun.proxy.$Proxy38.toString(Unknown Source)
>>     at java.lang.String.valueOf(String.java:2994)
>>     at java.lang.StringBuilder.append(StringBuilder.java:131)
>>     at java.util.AbstractMap.toString(AbstractMap.java:559)
>>     at java.text.MessageFormat.subformat(MessageFormat.java:1280)
>>     at java.text.MessageFormat.format(MessageFormat.java:865)
>>     at java.text.Format.format(Format.java:157)
>>     at java.text.MessageFormat.format(MessageFormat.java:841)
>>     at 
>> org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)
>>     at 
>> org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
>>     at 
>> org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
>>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
>>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
>>     at 
>> org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)
>>     at 
>> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>     at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>     at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>     at java.lang.reflect.Method.invoke(Method.java:498)
>>     at 
>> org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
>>     at 
>> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
>>     ... 29 more
>>
>> On 24/06/18 13:02, Romain Manni-Bucau wrote:
>>> mapping error in your model it seems or bad persistence unit 
>>> definition if
>>> you dont use scanning.
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>> <http://rmannibucau.wordpress.com> | Github 
>>> <https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>> <https://www.packtpub.com/application-development/java-ee-8-high-performance> 
>>>
>>>
>>>
>>> Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> thanks.  removing the @Jars helped. it is now injecting CDI bean fine.
>>>> but now i get OpenJPA NPE on
>>>> List<QuoteType> quoteTypeList = query.getResultList();
>>>>
>>>> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
>>>> org.apache.openjpa.persistence.PersistenceException: null
>>>>       at 
>>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
>>>>       at 
>>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032) 
>>>>
>>>>       at
>>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382) 
>>>>
>>>>       at
>>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080) 
>>>>
>>>>       at
>>>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35) 
>>>>
>>>>       at 
>>>> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
>>>>       at 
>>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
>>>>       at 
>>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
>>>>       at 
>>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
>>>>       at
>>>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541) 
>>>>
>>>>       at
>>>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
>>>>       at
>>>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290) 
>>>>
>>>>       at
>>>> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51) 
>>>>
>>>>       at
>>>>
>>>> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java) 
>>>>
>>>>       at
>>>> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96) 
>>>>
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>       at
>>>>
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
>>>>
>>>>       at
>>>>
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
>>>>
>>>>       at java.lang.reflect.Method.invoke(Method.java:498)
>>>>       at
>>>>
>>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
>>>>
>>>>       at
>>>>
>>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
>>>>
>>>>       at
>>>>
>>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
>>>>
>>>>       at
>>>>
>>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40) 
>>>>
>>>>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>>>       at
>>>>
>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
>>>>
>>>>       at
>>>>
>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
>>>>
>>>>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>>>       at 
>>>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>>>       at 
>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>>>       at 
>>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>>>       at 
>>>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>>>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
>>>>
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
>>>>
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 
>>>>
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 
>>>>
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 
>>>>
>>>>       at
>>>>
>>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 
>>>>
>>>> Caused by: java.lang.NullPointerException
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) 
>>>>
>>>>       at
>>>>
>>>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) 
>>>>
>>>>       at
>>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
>>>>       at 
>>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
>>>>       ... 45 more
>>>>
>>>>
>>>> On 24/06/18 12:18, Romain Manni-Bucau wrote:
>>>>> you don't need @Jars for that
>>>>>
>>>>> why you get an exception is cause appcomposers knows mysql has no EE
>>>>> classes so it is excluded from the "find" logic. @Jars means "grab 
>>>>> the
>>>> jars
>>>>> matching this prefix and scan them to include them in the deployed 
>>>>> app".
>>>>>
>>>>> Romain Manni-Bucau
>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>> https://github.com/rmannibucau> |
>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>> <
>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>>
>>>>>
>>>>>
>>>>> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> i tried adding test scope to pom.xml
>>>>>> <dependency>
>>>>>>                <groupId>mysql</groupId>
>>>>>> <artifactId>mysql-connector-java</artifactId>
>>>>>> <version>${mysql.connector.version}</version>
>>>>>>                <scope>test</scope>
>>>>>>            </dependency>
>>>>>>
>>>>>> also added mysql-connector-java-5.1.33.jar to the root of
>>>>>> src/test/resources but i still get
>>>>>> java.lang.IllegalArgumentException: mysql not found in classpath
>>>>>>        at
>>>>>>
>>>>>>
>>>> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020) 
>>>>
>>>>>>        at
>>>>>>
>>>>>>
>>>> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899) 
>>>>
>>>>>>        at
>>>>>>
>>>>>>
>>>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651) 
>>>>
>>>>>>
>>>>>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
>>>>>>> Appcopposer loads classes in the classpath so add it as a test
>>>>>> dependency.
>>>>>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>
>>>>>>>> not much luck with arquillian. i am trying ApplicationComposer 
>>>>>>>> again.
>>>>>>>> now i understand the properties format
>>>>>>>> @ContainerProperties({ @ContainerProperties.Property(name = 
>>>>>>>> "sales",
>>>>>>>> value = "new://Resource?type=DataSource"),
>>>>>>>>             @ContainerProperties.Property(name = 
>>>>>>>> "sales.JdbcDriver",
>>>> value
>>>>>>>> = "com.mysql.jdbc.Driver"),
>>>>>>>>             @ContainerProperties.Property(name = "sales.JdbcUrl",
>>>> value =
>>>>>>>> "jdbc:mysql://localhost:3306/sales"),
>>>>>>>>             @ContainerProperties.Property(name = "sales.Username",
>>>> value =
>>>>>>>> "admin"),
>>>>>>>>             @ContainerProperties.Property(name = "sales.Password",
>>>> value =
>>>>>>>> "blahblah") })
>>>>>>>>
>>>>>>>> but now i get
>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>         at
>>>>>>>>
>>>>>>>>
>>>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43) 
>>>>
>>>>>>>>         at
>>>>>>>>
>>>>>>>>
>>>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86) 
>>>>
>>>>>>>> how to bundle the mysql driver? i tried
>>>>>>>> @Jars("mysql")
>>>>>>>>
>>>>>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>>>>>>>> You need all your tested app needs (this is why classpath 
>>>>>>>>> deploypent
>>>>>>>>> solutions are easier to maintain).
>>>>>>>>>
>>>>>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
>>>> maven
>>>>>>>>> based. It can help.
>>>>>>>>>
>>>>>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>
>>>>>>>>>> ah ok.  i found
>>>>>>>>>> .addAsManifestResource(new
>>>>>> ClassLoaderAsset("META-INF/persistence.xml"),
>>>>>>>>>> "persistence.xml")
>>>>>>>>>>
>>>>>>>>>> in
>>>>>>>>>>
>>>>>>>>>>
>>>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java 
>>>>
>>>>>>>>>> but now i am back to
>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>> qualifiers
>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>> for injection into Field Injection Point, field name : 
>>>>>>>>>> quoteTypeDao,
>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>>> Name:null, API
>>>>>>>>>>
>>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>>
>>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>>
>>>>>>>>>>          at
>>>>>>>>>>
>>>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327) 
>>>>>>
>>>>>>>>>> so i must have missed a required class somewhere
>>>>>>>>>>
>>>>>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>>>>>>>> do i need to copy the persistence.xml to
>>>> src/test/resources/META-INF?
>>>>>>>>>>> or can i specify its location somewhere in config?
>>>>>>>>>>>
>>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml 
>>>>>>>>>>> for
>>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>>>>>>>
>>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>>
>>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml 
>>>>>>>>>>> for
>>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>>>>>>>
>>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>>
>>>>>>>>>>> INFO - Set the 'openejb.validation.output.level' system 
>>>>>>>>>>> property to
>>>>>>>>>>> VERBOSE for increased validation details.
>>>>>>>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>>>>>>>
>>>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales] 
>>>>
>>>>>>>>>>> org.apache.openejb.config.ValidationFailedException: Module 
>>>>>>>>>>> failed
>>>>>>>>>>> validation. AppModule(name=sales)
>>>>>>>>>>>         at
>>>>>>>>>>>
>>>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88) 
>>>>
>>>>>>>>>>>         at
>>>>>>>>>>>
>>>>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322) 
>>>>>>
>>>>>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>>>>>>>> You can but you need to add all the object graph in the 
>>>>>>>>>>>> archive.
>>>>>> Here
>>>>>>>>>>>> you
>>>>>>>>>>>> miss an injection it seems (in your dao?).
>>>>>>>>>>>>
>>>>>>>>>>>> Side note: operatesondeployment and naming your archive is not
>>>>>> needed
>>>>>>>>>>>> here.
>>>>>>>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>>>>>>>
>>>>>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> i got the sample configuration from
>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html 
>>>>>>>>>>>>>
>>>>>>>> under
>>>>>>>>>>>>> remote section.
>>>>>>>>>>>>>
>>>>>>>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: 
>>>>>>>>>>>>> Api type
>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>> qualifiers
>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>> quoteTypeDao,
>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, 
>>>>>>>>>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>>
>>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>>
>>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>>
>>>>>>>>>>>>>           at
>>>>>>>>>>>>>
>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327) 
>>>>
>>>>>>>>>>>>>           at
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196) 
>>>>
>>>>>>>>>>>>> i created the @Deployment using
>>>>>>>>>>>>> @Inject
>>>>>>>>>>>>>           private QuoteTypeDao quoteTypeDao;
>>>>>>>>>>>>>
>>>>>>>>>>>>>           @Deployment(name = "archive")
>>>>>>>>>>>>>           public static WebArchive war() {
>>>>>>>>>>>>>               return ShrinkWrap.create(WebArchive.class,
>>>>>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, 
>>>>>>>>>>>>> "beans.xml")
>>>>>>>>>>>>> .addClasses(QuoteTypeDao.class);
>>>>>>>>>>>>>           }
>>>>>>>>>>>>>
>>>>>>>>>>>>>           @Test
>>>>>>>>>>>>>           @OperateOnDeployment("archive")
>>>>>>>>>>>>>           public void test1() {
>>>>>>>>>>>>>               Quote quote = new Quote();
>>>>>>>>>>>>>               Promotion promotion = null;
>>>>>>>>>>>>>               List<QuoteType> quoteTypeList =
>>>>>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>>>>>>>               System.out.println("Quote type list size: " +
>>>>>>>>>>>>> quoteTypeList.size());
>>>>>>>>>>>>>               for (QuoteType quoteType : quoteTypeList) {
>>>>>>>>>>>>> System.out.println(quoteType.getName());
>>>>>>>>>>>>>                   // quoteGeneratorDao.generateQuote(quote,
>>>>>> promotion,
>>>>>>>>>>>>>                   // quoteType.getQuoteTypeCategories(),
>>>>>> quoteQuestions,
>>>>>>>>>>>>>                   // quoteInit, true);
>>>>>>>>>>>>>                   assertEquals(0, 1);
>>>>>>>>>>>>>               }
>>>>>>>>>>>>>               assertEquals(0, 1);
>>>>>>>>>>>>>           }
>>>>>>>>>>>>>
>>>>>>>>>>>>> can i not inject a CDI bean into the test using
>>>>>>>>>>>>> arquillian-tomee-remote?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>> It is not needed at all bit it appears in your stack. If 
>>>>>>>>>>>>>> it is a
>>>>>>>> copy
>>>>>>>>>>>>> paste
>>>>>>>>>>>>>> just drop it ;)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> hi, i checked 
>>>>>>>>>>>>>>> http://incubator.apache.org/projects/sirona.html
>>>>>>>> but i
>>>>>>>>>>>>>>> couldn't find any documentation.  is sirona a 
>>>>>>>>>>>>>>> requirement for
>>>>>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
>>>> tests?
>>>>>>>>>>>>>>> if so,
>>>>>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>>>>>>>> <property name="javaagent">
>>>>>>>>>>>>>>>
>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>>>>>>>> </property>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode 
>>>>>>>>>>>>>>>> is not
>>>>>>>> safe.
>>>>>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> thanks i added it using
>>>>>>>>>>>>>>>>> <property
>>>>>>>>>>>>>>>>>
>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>>>>>>>> but i get these errors (which don't seem to stop 
>>>>>>>>>>>>>>>>> execution)
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> fail to transform
>>>>>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not 
>>>>>>>>>>>>>>>>> supported
>>>>>> with
>>>>>>>>>>>>>>>>> computeFrames option
>>>>>>>>>>>>>>>>>             at org.apache.sirona.asm.Frame.a(Unknown 
>>>>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>>>             at
>>>>>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException: 
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: 
>>>>>>>>>>>>>>>>> Api
>>>>>> type
>>>>>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with 
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> qualifiers
>>>>>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
>>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>>>>>>>
>>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>>
>>>>>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>>>>>>>> embedded
>>>>>>>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>> You can add it in libs property of arquillian container
>>>>>> config.
>>>>>>>>>>>>>>>>>> Just
>>>>>>>>>>>>>>>>> prefix
>>>>>>>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> It is a multiline property so you can add N libs to 
>>>>>>>>>>>>>>>>>> tomee
>>>> lib
>>>>>>>> this
>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> INFO: Downloading
>>>>>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>>>>>>>> please
>>>>>>>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
>>>> complaining
>>>>>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. 
>>>>>>>>>>>>>>>>>>> Please
>>>> send
>>>>>>>> the
>>>>>>>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: 
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>> Unable to
>>>>>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> is there any way to directly bring in the mysql 
>>>>>>>>>>>>>>>>>>> driver from
>>>>>>>> maven
>>>>>>>>>>>>>>>>>>> central? or do i need to download manually and put 
>>>>>>>>>>>>>>>>>>> it into
>>>>>>>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write 
>>>>>>>>>>>>>>>>>>>> it in
>>>> the
>>>>>>>>>>>>>>>>>>>> final
>>>>>>>>>>>>>>>>> module
>>>>>>>>>>>>>>>>>>>> instead of trying to use the parent which will be 
>>>>>>>>>>>>>>>>>>>> executed
>>>>>>>>>>>>>>>>>>>> before
>>>>>>>>>>>>> any
>>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> If A depends on B which depends on C then write 
>>>>>>>>>>>>>>>>>>>> your tests
>>>>>> in
>>>>>>>>>>>>>>>>>>>> A for
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>>>>>>>> (potentially
>>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> 
>>>>>>>>>>>>>>>>>>>> | Book
>>>>>>>>>>>>>>>>>>>> <
>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>>
>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
>>>> case.
>>>>>>>> can
>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
>>>> everything
>>>>>>>>>>>>>>>>>>>>> need to
>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>>>>>>>> Arquilian
>>>>>>>>>>>>>>> Test"
>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>>>>>>>> instance)
>>>>>>>>>>>>> in a
>>>>>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once 
>>>>>>>>>>>>>>>>>>>>> which
>>>>>> are
>>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>>> modules
>>>>>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>>>>>>>> project.
>>>>>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the 
>>>>>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>>>>> ones we
>>>>>>>>>>>>>>> have)
>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The 
>>>>>>>>>>>>>>>>>>>>>> advantage of
>>>> the
>>>>>>>>>>>>>>> properties
>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt 
>>>>>>>>>>>>>>>>>>>>>> require a
>>>>>>>> maven
>>>>>>>>>>>>>>> build
>>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Arquillian is great to test complete 
>>>>>>>>>>>>>>>>>>>>>> application*s* in a
>>>>>>>> real
>>>>>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>>>>>>>> applications
>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real 
>>>>>>>>>>>>>>>>>>>>>> app
>>>>>>>> (single
>>>>>>>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will 
>>>>>>>>>>>>>>>>>>>>>> save a
>>>>>> lot
>>>>>>>> of
>>>>>>>>>>>>>>> time.
>>>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | 
>>>>>>>>>>>>>>>>>>>>>> Blog
>>>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> |
>>>> Book
>>>>>>>>>>>>>>>>>>>>>> <
>>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>>
>>>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create 
>>>>>>>>>>>>>>>>>>>>>>> some
>>>>>>>> tests.
>>>>>>>>>>>>> CDI
>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
>>>>>> uncertain
>>>>>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>>> how
>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> i was going to start by just loading the 
>>>>>>>>>>>>>>>>>>>>>>> database as
>>>>>>>>>>>>>>>>>>>>>>> normal as
>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>>>>>> copy of production database. but how do i 
>>>>>>>>>>>>>>>>>>>>>>> specify the
>>>>>>>>>>>>>>>>>>>>>>> username
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>>>>>>>> connect to
>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> db?
>>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>>>>>>>> "mydb",
>>>>>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml 
>>>>>>>>>>>>>>>>>>>>>>> file?
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> another question...is it better to start with
>>>> Arquillian
>>>>>> or
>>>>>>>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>>>>>>>
>>>>
>>
>
>
>



Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
i am loading the PU with a producer like
@ApplicationScoped
public class EntityManagerProducer {

     @PersistenceUnit(unitName = "sales")
     private EntityManagerFactory entityManagerFactory;

     @Produces
     @Default
     @RequestScoped
     public EntityManager create() {
         return this.entityManagerFactory.createEntityManager();
     }

     public void dispose(@Disposes @Default EntityManager entityManager) {
         if (entityManager.isOpen()) {
             entityManager.close();
         }
     }
}

On 24/06/18 13:46, Matthew Broadhead wrote:
> i changed
> @Descriptors(@Descriptor(name = "persistence.xml", path = 
> META-INF/persistence.xml"))
> to
> @Descriptors(@Descriptor(name = "persistence.xml", path = 
> "src/main/resources/META-INF/persistence.xml"))
> and now it is loading the persistence.xml
>
> i still get the same error.  if i turn logging up to TRACE i get the 
> below.  is there any way to find the particular mapping might be 
> causing the problem?
>
> org.apache.openejb.OpenEJBException: Creating application failed: 
> /home/matthew/git/case-management/sales/QuoteGeneratorTest: 
> org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal 
> general error> org.apache.openjpa.persistence.PersistenceException: 
> There was an error when invoking the static newInstance method on the 
> named factory class 
> "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
> exception for details.
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
>     at 
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)
>     at 
> org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)
>     at 
> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)
>     at 
> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>     at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>     at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
> Caused by: org.apache.openejb.OpenEJBException: 
> org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.: <openjpa-2.4.2-r422266:1777108 fatal 
> general error> org.apache.openjpa.persistence.PersistenceException: 
> There was an error when invoking the static newInstance method on the 
> named factory class 
> "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
> exception for details.
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
>     ... 21 more
> Caused by: org.apache.openejb.OpenEJBRuntimeException: 
> <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)
>     at 
> org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)
>     at 
> org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
>     ... 21 more
> Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: There was an 
> error when invoking the static newInstance method on the named factory 
> class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the 
> nested exception for details.
>     at 
> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)
>     at 
> org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
>     ... 24 more
> Caused by: java.lang.IllegalStateException: On a thread without an 
> initialized context nor a classloader mapping a deployed app
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)
>     at 
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)
>     at 
> org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)
>     at 
> org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)
>     at 
> org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)
>     at 
> org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
>     at com.sun.proxy.$Proxy38.toString(Unknown Source)
>     at java.lang.String.valueOf(String.java:2994)
>     at java.lang.StringBuilder.append(StringBuilder.java:131)
>     at java.util.AbstractMap.toString(AbstractMap.java:559)
>     at java.text.MessageFormat.subformat(MessageFormat.java:1280)
>     at java.text.MessageFormat.format(MessageFormat.java:865)
>     at java.text.Format.format(Format.java:157)
>     at java.text.MessageFormat.format(MessageFormat.java:841)
>     at 
> org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)
>     at 
> org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
>     at 
> org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
>     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
>     at 
> org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)
>     at 
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:498)
>     at 
> org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
>     at 
> org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
>     ... 29 more
>
> On 24/06/18 13:02, Romain Manni-Bucau wrote:
>> mapping error in your model it seems or bad persistence unit 
>> definition if
>> you dont use scanning.
>>
>> Romain Manni-Bucau
>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> <https://rmannibucau.metawerx.net/> | Old Blog
>> <http://rmannibucau.wordpress.com> | Github 
>> <https://github.com/rmannibucau> |
>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>> <https://www.packtpub.com/application-development/java-ee-8-high-performance> 
>>
>>
>>
>> Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>
>>> thanks.  removing the @Jars helped.  it is now injecting CDI bean fine.
>>> but now i get OpenJPA NPE on
>>> List<QuoteType> quoteTypeList = query.getResultList();
>>>
>>> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
>>> org.apache.openjpa.persistence.PersistenceException: null
>>>       at 
>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
>>>       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032) 
>>>
>>>       at
>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382) 
>>>
>>>       at
>>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080) 
>>>
>>>       at
>>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35) 
>>>
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
>>>       at 
>>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
>>>       at
>>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541) 
>>>
>>>       at
>>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
>>>       at
>>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290) 
>>>
>>>       at
>>> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51) 
>>>
>>>       at
>>>
>>> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java) 
>>>
>>>       at
>>> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96) 
>>>
>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>       at
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
>>>
>>>       at
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
>>>
>>>       at java.lang.reflect.Method.invoke(Method.java:498)
>>>       at
>>>
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
>>>
>>>       at
>>>
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
>>>
>>>       at
>>>
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
>>>
>>>       at
>>>
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
>>>
>>>       at
>>>
>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44) 
>>>
>>>       at
>>>
>>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40) 
>>>
>>>       at
>>>
>>> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070) 
>>>
>>>       at
>>>
>>> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40) 
>>>
>>>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>>       at
>>>
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
>>>
>>>       at
>>>
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
>>>
>>>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>>       at 
>>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>>       at 
>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>>       at 
>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>>       at 
>>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 
>>>
>>>       at
>>>
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 
>>>
>>> Caused by: java.lang.NullPointerException
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) 
>>>
>>>       at
>>>
>>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) 
>>>
>>>       at
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
>>>       at 
>>> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
>>>       ... 45 more
>>>
>>>
>>> On 24/06/18 12:18, Romain Manni-Bucau wrote:
>>>> you don't need @Jars for that
>>>>
>>>> why you get an exception is cause appcomposers knows mysql has no EE
>>>> classes so it is excluded from the "find" logic. @Jars means "grab the
>>> jars
>>>> matching this prefix and scan them to include them in the deployed 
>>>> app".
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>> <http://rmannibucau.wordpress.com> | Github <
>>> https://github.com/rmannibucau> |
>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>
>>>>
>>>> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>
>>>>> i tried adding test scope to pom.xml
>>>>> <dependency>
>>>>>                <groupId>mysql</groupId>
>>>>> <artifactId>mysql-connector-java</artifactId>
>>>>> <version>${mysql.connector.version}</version>
>>>>>                <scope>test</scope>
>>>>>            </dependency>
>>>>>
>>>>> also added mysql-connector-java-5.1.33.jar to the root of
>>>>> src/test/resources but i still get
>>>>> java.lang.IllegalArgumentException: mysql not found in classpath
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020) 
>>>
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899) 
>>>
>>>>>        at
>>>>>
>>>>>
>>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651) 
>>>
>>>>>
>>>>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
>>>>>> Appcopposer loads classes in the classpath so add it as a test
>>>>> dependency.
>>>>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>
>>>>>>> not much luck with arquillian. i am trying ApplicationComposer 
>>>>>>> again.
>>>>>>> now i understand the properties format
>>>>>>> @ContainerProperties({ @ContainerProperties.Property(name = 
>>>>>>> "sales",
>>>>>>> value = "new://Resource?type=DataSource"),
>>>>>>>             @ContainerProperties.Property(name = 
>>>>>>> "sales.JdbcDriver",
>>> value
>>>>>>> = "com.mysql.jdbc.Driver"),
>>>>>>>             @ContainerProperties.Property(name = "sales.JdbcUrl",
>>> value =
>>>>>>> "jdbc:mysql://localhost:3306/sales"),
>>>>>>>             @ContainerProperties.Property(name = "sales.Username",
>>> value =
>>>>>>> "admin"),
>>>>>>>             @ContainerProperties.Property(name = "sales.Password",
>>> value =
>>>>>>> "blahblah") })
>>>>>>>
>>>>>>> but now i get
>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>         at
>>>>>>>
>>>>>>>
>>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43) 
>>>
>>>>>>>         at
>>>>>>>
>>>>>>>
>>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86) 
>>>
>>>>>>> how to bundle the mysql driver? i tried
>>>>>>> @Jars("mysql")
>>>>>>>
>>>>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>>>>>>> You need all your tested app needs (this is why classpath 
>>>>>>>> deploypent
>>>>>>>> solutions are easier to maintain).
>>>>>>>>
>>>>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
>>> maven
>>>>>>>> based. It can help.
>>>>>>>>
>>>>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> ah ok.  i found
>>>>>>>>> .addAsManifestResource(new
>>>>> ClassLoaderAsset("META-INF/persistence.xml"),
>>>>>>>>> "persistence.xml")
>>>>>>>>>
>>>>>>>>> in
>>>>>>>>>
>>>>>>>>>
>>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java 
>>>
>>>>>>>>> but now i am back to
>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>> qualifiers
>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>> for injection into Field Injection Point, field name : 
>>>>>>>>> quoteTypeDao,
>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>> Name:null, API
>>>>>>>>>
>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>          at
>>>>>>>>>
>>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327) 
>>>>>
>>>>>>>>> so i must have missed a required class somewhere
>>>>>>>>>
>>>>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>>>>>>> do i need to copy the persistence.xml to
>>> src/test/resources/META-INF?
>>>>>>>>>> or can i specify its location somewhere in config?
>>>>>>>>>>
>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>>>>>>
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>
>>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>>>>>>
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales) 
>>>
>>>>>>>>>> INFO - Set the 'openejb.validation.output.level' system 
>>>>>>>>>> property to
>>>>>>>>>> VERBOSE for increased validation details.
>>>>>>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>>>>>>
>>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales] 
>>>
>>>>>>>>>> org.apache.openejb.config.ValidationFailedException: Module 
>>>>>>>>>> failed
>>>>>>>>>> validation. AppModule(name=sales)
>>>>>>>>>>         at
>>>>>>>>>>
>>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88) 
>>>
>>>>>>>>>>         at
>>>>>>>>>>
>>>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322) 
>>>>>
>>>>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>>>>>>> You can but you need to add all the object graph in the 
>>>>>>>>>>> archive.
>>>>> Here
>>>>>>>>>>> you
>>>>>>>>>>> miss an injection it seems (in your dao?).
>>>>>>>>>>>
>>>>>>>>>>> Side note: operatesondeployment and naming your archive is not
>>>>> needed
>>>>>>>>>>> here.
>>>>>>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>>>>>>
>>>>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>
>>>>>>>>>>>> i got the sample configuration from
>>>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html 
>>>>>>>>>>>>
>>>>>>> under
>>>>>>>>>>>> remote section.
>>>>>>>>>>>>
>>>>>>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api 
>>>>>>>>>>>> type
>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>> qualifiers
>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>> quoteTypeDao,
>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, 
>>>>>>>>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>
>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>>>>           at
>>>>>>>>>>>>
>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>>>>>>           at
>>>>>>>>>>>>
>>>>>>>>>>>>
>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196) 
>>>
>>>>>>>>>>>> i created the @Deployment using
>>>>>>>>>>>> @Inject
>>>>>>>>>>>>           private QuoteTypeDao quoteTypeDao;
>>>>>>>>>>>>
>>>>>>>>>>>>           @Deployment(name = "archive")
>>>>>>>>>>>>           public static WebArchive war() {
>>>>>>>>>>>>               return ShrinkWrap.create(WebArchive.class,
>>>>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, 
>>>>>>>>>>>> "beans.xml")
>>>>>>>>>>>> .addClasses(QuoteTypeDao.class);
>>>>>>>>>>>>           }
>>>>>>>>>>>>
>>>>>>>>>>>>           @Test
>>>>>>>>>>>>           @OperateOnDeployment("archive")
>>>>>>>>>>>>           public void test1() {
>>>>>>>>>>>>               Quote quote = new Quote();
>>>>>>>>>>>>               Promotion promotion = null;
>>>>>>>>>>>>               List<QuoteType> quoteTypeList =
>>>>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>>>>>>               System.out.println("Quote type list size: " +
>>>>>>>>>>>> quoteTypeList.size());
>>>>>>>>>>>>               for (QuoteType quoteType : quoteTypeList) {
>>>>>>>>>>>> System.out.println(quoteType.getName());
>>>>>>>>>>>>                   // quoteGeneratorDao.generateQuote(quote,
>>>>> promotion,
>>>>>>>>>>>>                   // quoteType.getQuoteTypeCategories(),
>>>>> quoteQuestions,
>>>>>>>>>>>>                   // quoteInit, true);
>>>>>>>>>>>>                   assertEquals(0, 1);
>>>>>>>>>>>>               }
>>>>>>>>>>>>               assertEquals(0, 1);
>>>>>>>>>>>>           }
>>>>>>>>>>>>
>>>>>>>>>>>> can i not inject a CDI bean into the test using
>>>>>>>>>>>> arquillian-tomee-remote?
>>>>>>>>>>>>
>>>>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>>>>>>> It is not needed at all bit it appears in your stack. If 
>>>>>>>>>>>>> it is a
>>>>>>> copy
>>>>>>>>>>>> paste
>>>>>>>>>>>>> just drop it ;)
>>>>>>>>>>>>>
>>>>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>
>>>>>>>>>>>>>> hi, i checked 
>>>>>>>>>>>>>> http://incubator.apache.org/projects/sirona.html
>>>>>>> but i
>>>>>>>>>>>>>> couldn't find any documentation.  is sirona a requirement 
>>>>>>>>>>>>>> for
>>>>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
>>> tests?
>>>>>>>>>>>>>> if so,
>>>>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>>>>>>> <property name="javaagent">
>>>>>>>>>>>>>>
>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>>>>>>> </property>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode 
>>>>>>>>>>>>>>> is not
>>>>>>> safe.
>>>>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> thanks i added it using
>>>>>>>>>>>>>>>> <property
>>>>>>>>>>>>>>>>
>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>>>>>>> but i get these errors (which don't seem to stop 
>>>>>>>>>>>>>>>> execution)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> fail to transform
>>>>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not 
>>>>>>>>>>>>>>>> supported
>>>>> with
>>>>>>>>>>>>>>>> computeFrames option
>>>>>>>>>>>>>>>>             at org.apache.sirona.asm.Frame.a(Unknown 
>>>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>>             at
>>>>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: 
>>>>>>>>>>>>>>>> Api
>>>>> type
>>>>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>>>>>>>>> qualifiers
>>>>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
>>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>>>>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>>>>>>> embedded
>>>>>>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>> You can add it in libs property of arquillian container
>>>>> config.
>>>>>>>>>>>>>>>>> Just
>>>>>>>>>>>>>>>> prefix
>>>>>>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee
>>> lib
>>>>>>> this
>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> INFO: Downloading
>>>>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>>>>>>> please
>>>>>>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
>>> complaining
>>>>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please
>>> send
>>>>>>> the
>>>>>>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>>>>>>>>> Unable to
>>>>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> is there any way to directly bring in the mysql 
>>>>>>>>>>>>>>>>>> driver from
>>>>>>> maven
>>>>>>>>>>>>>>>>>> central? or do i need to download manually and put it 
>>>>>>>>>>>>>>>>>> into
>>>>>>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write 
>>>>>>>>>>>>>>>>>>> it in
>>> the
>>>>>>>>>>>>>>>>>>> final
>>>>>>>>>>>>>>>> module
>>>>>>>>>>>>>>>>>>> instead of trying to use the parent which will be 
>>>>>>>>>>>>>>>>>>> executed
>>>>>>>>>>>>>>>>>>> before
>>>>>>>>>>>> any
>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> If A depends on B which depends on C then write your 
>>>>>>>>>>>>>>>>>>> tests
>>>>> in
>>>>>>>>>>>>>>>>>>> A for
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>>>>>>> (potentially
>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>>>>>>
>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | 
>>>>>>>>>>>>>>>>>>> Book
>>>>>>>>>>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
>>> case.
>>>>>>> can
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
>>> everything
>>>>>>>>>>>>>>>>>>>> need to
>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>>>>>>> Arquilian
>>>>>>>>>>>>>> Test"
>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>>>>>>> instance)
>>>>>>>>>>>> in a
>>>>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once 
>>>>>>>>>>>>>>>>>>>> which
>>>>> are
>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>> modules
>>>>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>>>>>>> project.
>>>>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the 
>>>>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>>>> ones we
>>>>>>>>>>>>>> have)
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of
>>> the
>>>>>>>>>>>>>> properties
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt 
>>>>>>>>>>>>>>>>>>>>> require a
>>>>>>> maven
>>>>>>>>>>>>>> build
>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Arquillian is great to test complete 
>>>>>>>>>>>>>>>>>>>>> application*s* in a
>>>>>>> real
>>>>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>>>>>>> applications
>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
>>>>>>> (single
>>>>>>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will 
>>>>>>>>>>>>>>>>>>>>> save a
>>>>> lot
>>>>>>> of
>>>>>>>>>>>>>> time.
>>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> |
>>> Book
>>>>>>>>>>>>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create 
>>>>>>>>>>>>>>>>>>>>>> some
>>>>>>> tests.
>>>>>>>>>>>> CDI
>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
>>>>> uncertain
>>>>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>> how
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>>>>>>>>> normal as
>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>>>>> copy of production database. but how do i specify 
>>>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> username
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>>>>>>> connect to
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> db?
>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>>>>>>> "mydb",
>>>>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml 
>>>>>>>>>>>>>>>>>>>>>> file?
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> another question...is it better to start with
>>> Arquillian
>>>>> or
>>>>>>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>>>>>>
>>>
>



Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
i changed
@Descriptors(@Descriptor(name = "persistence.xml", path = 
META-INF/persistence.xml"))
to
@Descriptors(@Descriptor(name = "persistence.xml", path = 
"src/main/resources/META-INF/persistence.xml"))
and now it is loading the persistence.xml

i still get the same error.  if i turn logging up to TRACE i get the 
below.  is there any way to find the particular mapping might be causing 
the problem?

org.apache.openejb.OpenEJBException: Creating application failed: 
/home/matthew/git/case-management/sales/QuoteGeneratorTest: 
org.apache.openejb.OpenEJBRuntimeException: 
<openjpa-2.4.2-r422266:1777108 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: There was an error 
when invoking the static newInstance method on the named factory class 
"org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.: <openjpa-2.4.2-r422266:1777108 fatal general 
error> org.apache.openjpa.persistence.PersistenceException: There was an 
error when invoking the static newInstance method on the named factory 
class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.
     at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1042)
     at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:718)
     at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
     at 
org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:724)
     at 
org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:386)
     at 
org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1068)
     at 
org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
     at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
     at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
     at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
     at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: org.apache.openejb.OpenEJBException: 
org.apache.openejb.OpenEJBRuntimeException: 
<openjpa-2.4.2-r422266:1777108 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: There was an error 
when invoking the static newInstance method on the named factory class 
"org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.: <openjpa-2.4.2-r422266:1777108 fatal general 
error> org.apache.openjpa.persistence.PersistenceException: There was an 
error when invoking the static newInstance method on the named factory 
class "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.
     at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:873)
     ... 21 more
Caused by: org.apache.openejb.OpenEJBRuntimeException: 
<openjpa-2.4.2-r422266:1777108 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: There was an error 
when invoking the static newInstance method on the named factory class 
"org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.
     at 
org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:136)
     at 
org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.<init>(ReloadableEntityManagerFactory.java:105)
     at 
org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:157)
     at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:867)
     ... 21 more
Caused by: <openjpa-2.4.2-r422266:1777108 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: There was an error 
when invoking the static newInstance method on the named factory class 
"org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory". See the nested 
exception for details.
     at 
org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:73)
     at 
org.apache.openjpa.persistence.PersistenceProviderImpl.getBrokerFactory(PersistenceProviderImpl.java:149)
     at 
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:191)
     at 
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:63)
     at 
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable.call(EntityManagerFactoryCallable.java:109)
     at 
org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate(ReloadableEntityManagerFactory.java:134)
     ... 24 more
Caused by: java.lang.IllegalStateException: On a thread without an 
initialized context nor a classloader mapping a deployed app
     at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:287)
     at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.getContext(ThreadSingletonServiceImpl.java:263)
     at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:298)
     at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.get(ThreadSingletonServiceImpl.java:60)
     at 
org.apache.webbeans.config.WebBeansFinder.getSingletonInstance(WebBeansFinder.java:51)
     at 
org.apache.webbeans.config.WebBeansContext.getInstance(WebBeansContext.java:185)
     at 
org.apache.webbeans.config.WebBeansContext.currentInstance(WebBeansContext.java:203)
     at 
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.findBm(EntityManagerFactoryCallable.java:170)
     at 
org.apache.openejb.assembler.classic.EntityManagerFactoryCallable$BmHandler.invoke(EntityManagerFactoryCallable.java:158)
     at com.sun.proxy.$Proxy38.toString(Unknown Source)
     at java.lang.String.valueOf(String.java:2994)
     at java.lang.StringBuilder.append(StringBuilder.java:131)
     at java.util.AbstractMap.toString(AbstractMap.java:559)
     at java.text.MessageFormat.subformat(MessageFormat.java:1280)
     at java.text.MessageFormat.format(MessageFormat.java:865)
     at java.text.Format.format(Format.java:157)
     at java.text.MessageFormat.format(MessageFormat.java:841)
     at 
org.apache.openjpa.lib.util.Localizer$Message.getMessage(Localizer.java:282)
     at 
org.apache.openjpa.lib.util.Localizer$Message.toString(Localizer.java:309)
     at 
org.apache.openjpa.lib.log.AbstractLog.toString(AbstractLog.java:138)
     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:72)
     at org.apache.openjpa.lib.log.AbstractLog.trace(AbstractLog.java:67)
     at 
org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationProviderImpl.setInto(PersistenceProductDerivation.java:764)
     at 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newInstance(JDBCBrokerFactory.java:60)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at 
org.apache.openjpa.kernel.Bootstrap.invokeFactory(Bootstrap.java:131)
     at 
org.apache.openjpa.kernel.Bootstrap.newBrokerFactory(Bootstrap.java:65)
     ... 29 more

On 24/06/18 13:02, Romain Manni-Bucau wrote:
> mapping error in your model it seems or bad persistence unit definition if
> you dont use scanning.
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <https://www.packtpub.com/application-development/java-ee-8-high-performance>
>
>
> Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> thanks.  removing the @Jars helped.  it is now injecting CDI bean fine.
>> but now i get OpenJPA NPE on
>> List<QuoteType> quoteTypeList = query.getResultList();
>>
>> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
>> org.apache.openjpa.persistence.PersistenceException: null
>>       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
>>       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
>>       at
>>
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032)
>>       at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
>>       at
>>
>> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382)
>>       at
>> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
>>       at
>>
>> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>>       at
>>
>> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080)
>>       at
>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35)
>>       at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
>>       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
>>       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
>>       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
>>       at
>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541)
>>       at
>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
>>       at
>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
>>       at
>> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51)
>>       at
>>
>> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java)
>>       at
>> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96)
>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>       at
>>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>       at
>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>       at java.lang.reflect.Method.invoke(Method.java:498)
>>       at
>>
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>>       at
>>
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>       at
>>
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>>       at
>>
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>       at
>>
>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44)
>>       at
>>
>> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40)
>>       at
>>
>> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070)
>>       at
>>
>> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
>>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>       at
>>
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>>       at
>>
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>       at
>>
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>>       at
>>
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>       at
>>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>>       at
>>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>>       at
>>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>>       at
>>
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
>> Caused by: java.lang.NullPointerException
>>       at
>>
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452)
>>       at
>>
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412)
>>       at
>>
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305)
>>       at
>>
>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
>>       at
>>
>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>>       at
>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
>>       at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
>>       ... 45 more
>>
>>
>> On 24/06/18 12:18, Romain Manni-Bucau wrote:
>>> you don't need @Jars for that
>>>
>>> why you get an exception is cause appcomposers knows mysql has no EE
>>> classes so it is excluded from the "find" logic. @Jars means "grab the
>> jars
>>> matching this prefix and scan them to include them in the deployed app".
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>> <http://rmannibucau.wordpress.com> | Github <
>> https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>
>>>
>>> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> i tried adding test scope to pom.xml
>>>> <dependency>
>>>>                <groupId>mysql</groupId>
>>>> <artifactId>mysql-connector-java</artifactId>
>>>> <version>${mysql.connector.version}</version>
>>>>                <scope>test</scope>
>>>>            </dependency>
>>>>
>>>> also added mysql-connector-java-5.1.33.jar to the root of
>>>> src/test/resources but i still get
>>>> java.lang.IllegalArgumentException: mysql not found in classpath
>>>>        at
>>>>
>>>>
>> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
>>>>        at
>>>>
>>>>
>> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
>>>>        at
>>>>
>>>>
>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)
>>>>
>>>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
>>>>> Appcopposer loads classes in the classpath so add it as a test
>>>> dependency.
>>>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> not much luck with arquillian.  i am trying ApplicationComposer again.
>>>>>> now i understand the properties format
>>>>>> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
>>>>>> value = "new://Resource?type=DataSource"),
>>>>>>             @ContainerProperties.Property(name = "sales.JdbcDriver",
>> value
>>>>>> = "com.mysql.jdbc.Driver"),
>>>>>>             @ContainerProperties.Property(name = "sales.JdbcUrl",
>> value =
>>>>>> "jdbc:mysql://localhost:3306/sales"),
>>>>>>             @ContainerProperties.Property(name = "sales.Username",
>> value =
>>>>>> "admin"),
>>>>>>             @ContainerProperties.Property(name = "sales.Password",
>> value =
>>>>>> "blahblah") })
>>>>>>
>>>>>> but now i get
>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>         at
>>>>>>
>>>>>>
>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
>>>>>>         at
>>>>>>
>>>>>>
>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
>>>>>> how to bundle the mysql driver?  i tried
>>>>>> @Jars("mysql")
>>>>>>
>>>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>>>>>> You need all your tested app needs (this is why classpath deploypent
>>>>>>> solutions are easier to maintain).
>>>>>>>
>>>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
>> maven
>>>>>>> based. It can help.
>>>>>>>
>>>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>
>>>>>>>> ah ok.  i found
>>>>>>>> .addAsManifestResource(new
>>>> ClassLoaderAsset("META-INF/persistence.xml"),
>>>>>>>> "persistence.xml")
>>>>>>>>
>>>>>>>> in
>>>>>>>>
>>>>>>>>
>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
>>>>>>>> but now i am back to
>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>> qualifiers
>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>> Name:null, API
>>>>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>          at
>>>>>>>>
>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>> so i must have missed a required class somewhere
>>>>>>>>
>>>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>>>>>> do i need to copy the persistence.xml to
>> src/test/resources/META-INF?
>>>>>>>>> or can i specify its location somewhere in config?
>>>>>>>>>
>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>>>>>
>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>>>>>
>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>>>>>> INFO - Set the 'openejb.validation.output.level' system property to
>>>>>>>>> VERBOSE for increased validation details.
>>>>>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>>>>>
>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
>>>>>>>>> org.apache.openejb.config.ValidationFailedException: Module failed
>>>>>>>>> validation. AppModule(name=sales)
>>>>>>>>>         at
>>>>>>>>>
>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>>>>>>>>>         at
>>>>>>>>>
>>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
>>>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>>>>>> You can but you need to add all the object graph in the archive.
>>>> Here
>>>>>>>>>> you
>>>>>>>>>> miss an injection it seems (in your dao?).
>>>>>>>>>>
>>>>>>>>>> Side note: operatesondeployment and naming your archive is not
>>>> needed
>>>>>>>>>> here.
>>>>>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>>>>>
>>>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>
>>>>>>>>>>> i got the sample configuration from
>>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>> under
>>>>>>>>>>> remote section.
>>>>>>>>>>>
>>>>>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>> qualifiers
>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>> quoteTypeDao,
>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>>>> Name:null, API
>>>>>>>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>>>>           at
>>>>>>>>>>>
>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>>>>>           at
>>>>>>>>>>>
>>>>>>>>>>>
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>>>>>>>>>>> i created the @Deployment using
>>>>>>>>>>> @Inject
>>>>>>>>>>>           private QuoteTypeDao quoteTypeDao;
>>>>>>>>>>>
>>>>>>>>>>>           @Deployment(name = "archive")
>>>>>>>>>>>           public static WebArchive war() {
>>>>>>>>>>>               return ShrinkWrap.create(WebArchive.class,
>>>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>>>>>>>>>>                       .addClasses(QuoteTypeDao.class);
>>>>>>>>>>>           }
>>>>>>>>>>>
>>>>>>>>>>>           @Test
>>>>>>>>>>>           @OperateOnDeployment("archive")
>>>>>>>>>>>           public void test1() {
>>>>>>>>>>>               Quote quote = new Quote();
>>>>>>>>>>>               Promotion promotion = null;
>>>>>>>>>>>               List<QuoteType> quoteTypeList =
>>>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>>>>>               System.out.println("Quote type list size: " +
>>>>>>>>>>> quoteTypeList.size());
>>>>>>>>>>>               for (QuoteType quoteType : quoteTypeList) {
>>>>>>>>>>>                   System.out.println(quoteType.getName());
>>>>>>>>>>>                   // quoteGeneratorDao.generateQuote(quote,
>>>> promotion,
>>>>>>>>>>>                   // quoteType.getQuoteTypeCategories(),
>>>> quoteQuestions,
>>>>>>>>>>>                   // quoteInit, true);
>>>>>>>>>>>                   assertEquals(0, 1);
>>>>>>>>>>>               }
>>>>>>>>>>>               assertEquals(0, 1);
>>>>>>>>>>>           }
>>>>>>>>>>>
>>>>>>>>>>> can i not inject a CDI bean into the test using
>>>>>>>>>>> arquillian-tomee-remote?
>>>>>>>>>>>
>>>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>>>>>> It is not needed at all bit it appears in your stack. If it is a
>>>>>> copy
>>>>>>>>>>> paste
>>>>>>>>>>>> just drop it ;)
>>>>>>>>>>>>
>>>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
>>>>>> but i
>>>>>>>>>>>>> couldn't find any documentation.  is sirona a requirement for
>>>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
>> tests?
>>>>>>>>>>>>> if so,
>>>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>>>>>> <property name="javaagent">
>>>>>>>>>>>>>
>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>>>>>> </property>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
>>>>>> safe.
>>>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> thanks i added it using
>>>>>>>>>>>>>>> <property
>>>>>>>>>>>>>>>
>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> fail to transform
>>>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported
>>>> with
>>>>>>>>>>>>>>> computeFrames option
>>>>>>>>>>>>>>>             at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>>>>>>>>>>             at
>>>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>>>>>> Source)
>>>>>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api
>>>> type
>>>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>>>>>>>> qualifiers
>>>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
>>>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>>>>>> embedded
>>>>>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>> You can add it in libs property of arquillian container
>>>> config.
>>>>>>>>>>>>>>>> Just
>>>>>>>>>>>>>>> prefix
>>>>>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee
>> lib
>>>>>> this
>>>>>>>>>>> way
>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> INFO: Downloading
>>>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>>>>>> please
>>>>>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
>> complaining
>>>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please
>> send
>>>>>> the
>>>>>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>>>>>>>> Unable to
>>>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> is there any way to directly bring in the mysql driver from
>>>>>> maven
>>>>>>>>>>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write it in
>> the
>>>>>>>>>>>>>>>>>> final
>>>>>>>>>>>>>>> module
>>>>>>>>>>>>>>>>>> instead of trying to use the parent which will be executed
>>>>>>>>>>>>>>>>>> before
>>>>>>>>>>> any
>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> If A depends on B which depends on C then write your tests
>>>> in
>>>>>>>>>>>>>>>>>> A for
>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>>>>>> (potentially
>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>>>>>
>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
>> case.
>>>>>> can
>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
>> everything
>>>>>>>>>>>>>>>>>>> need to
>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>>>>>> Arquilian
>>>>>>>>>>>>> Test"
>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>>>>>> instance)
>>>>>>>>>>> in a
>>>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which
>>>> are
>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>> modules
>>>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>>>>>> project.
>>>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the other
>>>>>>>>>>>>>>>>>>>> ones we
>>>>>>>>>>>>> have)
>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of
>> the
>>>>>>>>>>>>> properties
>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
>>>>>> maven
>>>>>>>>>>>>> build
>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
>>>>>> real
>>>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>>>>>> applications
>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
>>>>>> (single
>>>>>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will save a
>>>> lot
>>>>>> of
>>>>>>>>>>>>> time.
>>>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> |
>> Book
>>>>>>>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
>>>>>> tests.
>>>>>>>>>>> CDI
>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
>>>> uncertain
>>>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>>>> how
>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>>>>>>>> normal as
>>>>>>>>>>> it
>>>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
>>>>>>>>>>>>>>>>>>>>> username
>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>>>>>> connect to
>>>>>>>>>>> the
>>>>>>>>>>>>>>> db?
>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>>>>>> "mydb",
>>>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> another question...is it better to start with
>> Arquillian
>>>> or
>>>>>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
mapping error in your model it seems or bad persistence unit definition if
you dont use scanning.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le dim. 24 juin 2018 à 12:52, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> thanks.  removing the @Jars helped.  it is now injecting CDI bean fine.
> but now i get OpenJPA NPE on
> List<QuoteType> quoteTypeList = query.getResultList();
>
> <openjpa-2.4.2-r422266:1777108 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: null
>      at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
>      at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
>      at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032)
>      at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
>      at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382)
>      at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
>      at
>
> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>      at
>
> org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080)
>      at
> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35)
>      at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
>      at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
>      at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
>      at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
>      at
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541)
>      at
> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
>      at
> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
>      at
> uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51)
>      at
>
> uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java)
>      at
> uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96)
>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>      at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>      at java.lang.reflect.Method.invoke(Method.java:498)
>      at
>
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>      at
>
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>      at
>
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>      at
>
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>      at
>
> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44)
>      at
>
> org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40)
>      at
>
> org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070)
>      at
>
> org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
>      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>      at
>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>      at
>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>      at
>
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
>      at
>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>      at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
>      at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
>      at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
>      at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
> Caused by: java.lang.NullPointerException
>      at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452)
>      at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412)
>      at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305)
>      at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
>      at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>      at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
>      at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
>      ... 45 more
>
>
> On 24/06/18 12:18, Romain Manni-Bucau wrote:
> > you don't need @Jars for that
> >
> > why you get an exception is cause appcomposers knows mysql has no EE
> > classes so it is excluded from the "find" logic. @Jars means "grab the
> jars
> > matching this prefix and scan them to include them in the deployed app".
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >
> >
> >
> > Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> i tried adding test scope to pom.xml
> >> <dependency>
> >>               <groupId>mysql</groupId>
> >> <artifactId>mysql-connector-java</artifactId>
> >> <version>${mysql.connector.version}</version>
> >>               <scope>test</scope>
> >>           </dependency>
> >>
> >> also added mysql-connector-java-5.1.33.jar to the root of
> >> src/test/resources but i still get
> >> java.lang.IllegalArgumentException: mysql not found in classpath
> >>       at
> >>
> >>
> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
> >>       at
> >>
> >>
> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
> >>       at
> >>
> >>
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)
> >>
> >>
> >> On 24/06/18 12:01, Romain Manni-Bucau wrote:
> >>> Appcopposer loads classes in the classpath so add it as a test
> >> dependency.
> >>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> not much luck with arquillian.  i am trying ApplicationComposer again.
> >>>> now i understand the properties format
> >>>> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
> >>>> value = "new://Resource?type=DataSource"),
> >>>>            @ContainerProperties.Property(name = "sales.JdbcDriver",
> value
> >>>> = "com.mysql.jdbc.Driver"),
> >>>>            @ContainerProperties.Property(name = "sales.JdbcUrl",
> value =
> >>>> "jdbc:mysql://localhost:3306/sales"),
> >>>>            @ContainerProperties.Property(name = "sales.Username",
> value =
> >>>> "admin"),
> >>>>            @ContainerProperties.Property(name = "sales.Password",
> value =
> >>>> "blahblah") })
> >>>>
> >>>> but now i get
> >>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> >>>> resolve class com.mysql.jdbc.Driver
> >>>>        at
> >>>>
> >>>>
> >>
> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
> >>>>        at
> >>>>
> >>>>
> >>
> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
> >>>> how to bundle the mysql driver?  i tried
> >>>> @Jars("mysql")
> >>>>
> >>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
> >>>>> You need all your tested app needs (this is why classpath deploypent
> >>>>> solutions are easier to maintain).
> >>>>>
> >>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are
> maven
> >>>>> based. It can help.
> >>>>>
> >>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
> >>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>
> >>>>>> ah ok.  i found
> >>>>>> .addAsManifestResource(new
> >> ClassLoaderAsset("META-INF/persistence.xml"),
> >>>>>> "persistence.xml")
> >>>>>>
> >>>>>> in
> >>>>>>
> >>>>>>
> >>
> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
> >>>>>> but now i am back to
> >>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> qualifiers
> >>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>> Name:null, API
> >>>>>>
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>         at
> >>>>>>
> >> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>>> so i must have missed a required class somewhere
> >>>>>>
> >>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
> >>>>>>> do i need to copy the persistence.xml to
> src/test/resources/META-INF?
> >>>>>>> or can i specify its location somewhere in config?
> >>>>>>>
> >>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>>>> SEVERE - Invalid EjbModule(name=sales,
> >>>>>>>
> >>>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>>>> SEVERE - Invalid WebModule(name=sales,
> >>>>>>>
> >>>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>>>> INFO - Set the 'openejb.validation.output.level' system property to
> >>>>>>> VERBOSE for increased validation details.
> >>>>>>> SEVERE - Unable to deploy collapsed ear in war
> >>>>>>>
> >>>>
> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> >>>>>>> org.apache.openejb.config.ValidationFailedException: Module failed
> >>>>>>> validation. AppModule(name=sales)
> >>>>>>>        at
> >>>>>>>
> >>
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
> >>>>>>>        at
> >>>>>>>
> >> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
> >>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
> >>>>>>>> You can but you need to add all the object graph in the archive.
> >> Here
> >>>>>>>> you
> >>>>>>>> miss an injection it seems (in your dao?).
> >>>>>>>>
> >>>>>>>> Side note: operatesondeployment and naming your archive is not
> >> needed
> >>>>>>>> here.
> >>>>>>>> It is useful when you deploy N > 1 archives.
> >>>>>>>>
> >>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> >>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>
> >>>>>>>>> i got the sample configuration from
> >>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>> under
> >>>>>>>>> remote section.
> >>>>>>>>>
> >>>>>>>>> now my problem is that i can't inject the CDI bean
> >>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >> qualifiers
> >>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>> for injection into Field Injection Point, field name :
> >> quoteTypeDao,
> >>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>>>>> Name:null, API
> >>>>>>>>>
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>>>>          at
> >>>>>>>>>
> >>>>
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>>>>>>          at
> >>>>>>>>>
> >>>>>>>>>
> >>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
> >>>>>>>>> i created the @Deployment using
> >>>>>>>>> @Inject
> >>>>>>>>>          private QuoteTypeDao quoteTypeDao;
> >>>>>>>>>
> >>>>>>>>>          @Deployment(name = "archive")
> >>>>>>>>>          public static WebArchive war() {
> >>>>>>>>>              return ShrinkWrap.create(WebArchive.class,
> >>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
> >>>>>>>>>                      .addClasses(QuoteTypeDao.class);
> >>>>>>>>>          }
> >>>>>>>>>
> >>>>>>>>>          @Test
> >>>>>>>>>          @OperateOnDeployment("archive")
> >>>>>>>>>          public void test1() {
> >>>>>>>>>              Quote quote = new Quote();
> >>>>>>>>>              Promotion promotion = null;
> >>>>>>>>>              List<QuoteType> quoteTypeList =
> >>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
> >>>>>>>>>              System.out.println("Quote type list size: " +
> >>>>>>>>> quoteTypeList.size());
> >>>>>>>>>              for (QuoteType quoteType : quoteTypeList) {
> >>>>>>>>>                  System.out.println(quoteType.getName());
> >>>>>>>>>                  // quoteGeneratorDao.generateQuote(quote,
> >> promotion,
> >>>>>>>>>                  // quoteType.getQuoteTypeCategories(),
> >> quoteQuestions,
> >>>>>>>>>                  // quoteInit, true);
> >>>>>>>>>                  assertEquals(0, 1);
> >>>>>>>>>              }
> >>>>>>>>>              assertEquals(0, 1);
> >>>>>>>>>          }
> >>>>>>>>>
> >>>>>>>>> can i not inject a CDI bean into the test using
> >>>>>>>>> arquillian-tomee-remote?
> >>>>>>>>>
> >>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> >>>>>>>>>> It is not needed at all bit it appears in your stack. If it is a
> >>>> copy
> >>>>>>>>> paste
> >>>>>>>>>> just drop it ;)
> >>>>>>>>>>
> >>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> >>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>
> >>>>>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
> >>>> but i
> >>>>>>>>>>> couldn't find any documentation.  is sirona a requirement for
> >>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor
> tests?
> >>>>>>>>>>> if so,
> >>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
> >>>>>>>>>>> <!-- we monitor the test with sirona -->
> >>>>>>>>>>> <property name="javaagent">
> >>>>>>>>>>>
> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >>>>>>>>>>> </property>
> >>>>>>>>>>>
> >>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
> >>>> safe.
> >>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>
> >>>>>>>>>>>>> thanks i added it using
> >>>>>>>>>>>>> <property
> >>>>>>>>>>>>>
> >>>>>>
> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>>>>>>>>>> but i get these errors (which don't seem to stop execution)
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> fail to transform
> >>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>>>>>>>>>>> JSR/RET are not supported with computeFrames
> >>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported
> >> with
> >>>>>>>>>>>>> computeFrames option
> >>>>>>>>>>>>>            at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>>>>>>>>>>            at
> >>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >>>>>>>>>>> Source)
> >>>>>>>>>>>>> SEVERE - Can't create DataSource
> >>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
> >>>>>>>>>>>>> java/net/URLClassLoader):
> >>>>>>>>>>>>> attempted  duplicate class definition for name:
> >>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> but this one is a stopper
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api
> >> type
> >>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>>>>>>>>>>> qualifiers
> >>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>>>>>>>>> quoteTypeDao,
> >>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
> >> WebBeansType:ENTERPRISE,
> >>>>>>>>>>>>> Name:null, API
> >>>>>>>>>>>>> Types:[java.lang.Object,uk.me
> >>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
> >>>>>>>>>>>
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
> >>>> embedded
> >>>>>>>>>>>>> tomee.remote.support = true
> >>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
> >>>>>>>>>>>>> tomee.serialization.class.whitelist = *
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>> You can add it in libs property of arquillian container
> >> config.
> >>>>>>>>>>>>>> Just
> >>>>>>>>>>>>> prefix
> >>>>>>>>>>>>>> the coords with mvn:.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee
> lib
> >>>> this
> >>>>>>>>> way
> >>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> INFO: Downloading
> >> org.apache.tomee:apache-tomee:7.0.3:zip:plus
> >>>>>>>>> please
> >>>>>>>>>>>>>>> wait...
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> i have an arquillian test running up ok but it is
> complaining
> >>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please
> send
> >>>> the
> >>>>>>>>>>>>>>> following stack trace and this message to
> >>>>>>>>>>>>>>> users@tomee.apache.org :
> >>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
> >>>>>>>>> Unable to
> >>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> is there any way to directly bring in the mysql driver from
> >>>> maven
> >>>>>>>>>>>>>>> central?  or do i need to download manually and put it into
> >>>>>>>>>>>>>>> src/test/tomee/lib?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write it in
> the
> >>>>>>>>>>>>>>>> final
> >>>>>>>>>>>>> module
> >>>>>>>>>>>>>>>> instead of trying to use the parent which will be executed
> >>>>>>>>>>>>>>>> before
> >>>>>>>>> any
> >>>>>>>>>>>>>>> other
> >>>>>>>>>>>>>>>> modules.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> If A depends on B which depends on C then write your tests
> >> in
> >>>>>>>>>>>>>>>> A for
> >>>>>>>>>>> the
> >>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
> >>>> (potentially
> >>>>>>>>> using
> >>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> For reference:
> >>>>>>>>>>>>>>>>
> >>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>>>>>>> and
> >>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my
> case.
> >>>> can
> >>>>>>>>> the
> >>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does
> everything
> >>>>>>>>>>>>>>>>> need to
> >>>>>>>>>>> be
> >>>>>>>>>>>>>>>>> done through http? looking at
> >>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
> >>>>>> Arquilian
> >>>>>>>>>>> Test"
> >>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>> looks as if beans can be injected...
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
> >>>> instance)
> >>>>>>>>> in a
> >>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which
> >> are
> >>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>> modules
> >>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
> >>>> project.
> >>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the other
> >>>>>>>>>>>>>>>>>> ones we
> >>>>>>>>>>> have)
> >>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of
> the
> >>>>>>>>>>> properties
> >>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
> >>>> maven
> >>>>>>>>>>> build
> >>>>>>>>>>>>>>> but
> >>>>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
> >>>> real
> >>>>>>>>>>> server,
> >>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
> >>>>>>>>>>>>>>>>>> applications
> >>>>>>>>> or
> >>>>>>>>>>>>>>>>>> frameworks, TomEE,
> >>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
> >>>> (single
> >>>>>>>>>>>>>>> deployment
> >>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will save a
> >> lot
> >>>> of
> >>>>>>>>>>> time.
> >>>>>>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> >>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> |
> Book
> >>>>>>>>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
> >>>> tests.
> >>>>>>>>> CDI
> >>>>>>>>>>> is
> >>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
> >> uncertain
> >>>>>>>>>>>>>>>>>>> about
> >>>>>>>>>>> how
> >>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>>>> load a test database.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
> >>>>>>>>>>>>>>>>>>> normal as
> >>>>>>>>> it
> >>>>>>>>>>>>> is a
> >>>>>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
> >>>>>>>>>>>>>>>>>>> username
> >>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
> >>>>>>>>>>>>>>>>>>> connect to
> >>>>>>>>> the
> >>>>>>>>>>>>> db?
> >>>>>>>>>>>>>>>>>>>
> @ContainerProperties(@ContainerProperties.Property(name =
> >>>>>>>>> "mydb",
> >>>>>>>>>>>>>>> value
> >>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> another question...is it better to start with
> Arquillian
> >> or
> >>>>>>>>>>>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>>>>>>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
thanks.  removing the @Jars helped.  it is now injecting CDI bean fine.  
but now i get OpenJPA NPE on
List<QuoteType> quoteTypeList = query.getResultList();

<openjpa-2.4.2-r422266:1777108 nonfatal general error> 
org.apache.openjpa.persistence.PersistenceException: null
     at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1029)
     at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:928)
     at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1032)
     at 
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
     at 
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2382)
     at 
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
     at 
org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
     at 
org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2080)
     at 
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:35)
     at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1257)
     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1013)
     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:869)
     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:800)
     at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:541)
     at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:274)
     at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
     at 
uk.me.kissy.sales.dao.QuoteTypeDao.selectQuoteTypes(QuoteTypeDao.java:51)
     at 
uk.me.kissy.sales.dao.QuoteTypeDao$$OwbNormalScopeProxy0.selectQuoteTypes(uk/me/kissy/sales/dao/QuoteTypeDao.java)
     at 
uk.me.kissy.sales.test.QuoteGeneratorTest.test1(QuoteGeneratorTest.java:96)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
     at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
     at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
     at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
     at 
org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:44)
     at 
org.apache.openejb.junit.DeployApplication$1.call(DeployApplication.java:40)
     at 
org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1070)
     at 
org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
     at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
     at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
     at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
     at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
     at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.NullPointerException
     at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setInverseRelation(JDBCStoreManager.java:452)
     at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:412)
     at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:305)
     at 
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
     at 
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
     at 
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1048)
     at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1006)
     ... 45 more


On 24/06/18 12:18, Romain Manni-Bucau wrote:
> you don't need @Jars for that
>
> why you get an exception is cause appcomposers knows mysql has no EE
> classes so it is excluded from the "find" logic. @Jars means "grab the jars
> matching this prefix and scan them to include them in the deployed app".
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <https://www.packtpub.com/application-development/java-ee-8-high-performance>
>
>
> Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> i tried adding test scope to pom.xml
>> <dependency>
>>               <groupId>mysql</groupId>
>> <artifactId>mysql-connector-java</artifactId>
>> <version>${mysql.connector.version}</version>
>>               <scope>test</scope>
>>           </dependency>
>>
>> also added mysql-connector-java-5.1.33.jar to the root of
>> src/test/resources but i still get
>> java.lang.IllegalArgumentException: mysql not found in classpath
>>       at
>>
>> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
>>       at
>>
>> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
>>       at
>>
>> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)
>>
>>
>> On 24/06/18 12:01, Romain Manni-Bucau wrote:
>>> Appcopposer loads classes in the classpath so add it as a test
>> dependency.
>>> Le dim. 24 juin 2018 11:37, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> not much luck with arquillian.  i am trying ApplicationComposer again.
>>>> now i understand the properties format
>>>> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
>>>> value = "new://Resource?type=DataSource"),
>>>>            @ContainerProperties.Property(name = "sales.JdbcDriver", value
>>>> = "com.mysql.jdbc.Driver"),
>>>>            @ContainerProperties.Property(name = "sales.JdbcUrl", value =
>>>> "jdbc:mysql://localhost:3306/sales"),
>>>>            @ContainerProperties.Property(name = "sales.Username", value =
>>>> "admin"),
>>>>            @ContainerProperties.Property(name = "sales.Password", value =
>>>> "blahblah") })
>>>>
>>>> but now i get
>>>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>> resolve class com.mysql.jdbc.Driver
>>>>        at
>>>>
>>>>
>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
>>>>        at
>>>>
>>>>
>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
>>>> how to bundle the mysql driver?  i tried
>>>> @Jars("mysql")
>>>>
>>>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>>>> You need all your tested app needs (this is why classpath deploypent
>>>>> solutions are easier to maintain).
>>>>>
>>>>> Maybe import our ziplock lib and use Mvn.Builder class if you are maven
>>>>> based. It can help.
>>>>>
>>>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> ah ok.  i found
>>>>>> .addAsManifestResource(new
>> ClassLoaderAsset("META-INF/persistence.xml"),
>>>>>> "persistence.xml")
>>>>>>
>>>>>> in
>>>>>>
>>>>>>
>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
>>>>>> but now i am back to
>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>> Name:null, API
>>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>         at
>>>>>>
>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>> so i must have missed a required class somewhere
>>>>>>
>>>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>>>> do i need to copy the persistence.xml to src/test/resources/META-INF?
>>>>>>> or can i specify its location somewhere in config?
>>>>>>>
>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>>>
>>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>>>
>>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>>>> INFO - Set the 'openejb.validation.output.level' system property to
>>>>>>> VERBOSE for increased validation details.
>>>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>>>
>>>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
>>>>>>> org.apache.openejb.config.ValidationFailedException: Module failed
>>>>>>> validation. AppModule(name=sales)
>>>>>>>        at
>>>>>>>
>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>>>>>>>        at
>>>>>>>
>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
>>>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>>>> You can but you need to add all the object graph in the archive.
>> Here
>>>>>>>> you
>>>>>>>> miss an injection it seems (in your dao?).
>>>>>>>>
>>>>>>>> Side note: operatesondeployment and naming your archive is not
>> needed
>>>>>>>> here.
>>>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>>>
>>>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> i got the sample configuration from
>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>> under
>>>>>>>>> remote section.
>>>>>>>>>
>>>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>> qualifiers
>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>> for injection into Field Injection Point, field name :
>> quoteTypeDao,
>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>> Name:null, API
>>>>>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>>          at
>>>>>>>>>
>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>>>          at
>>>>>>>>>
>>>>>>>>>
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>>>>>>>>> i created the @Deployment using
>>>>>>>>> @Inject
>>>>>>>>>          private QuoteTypeDao quoteTypeDao;
>>>>>>>>>
>>>>>>>>>          @Deployment(name = "archive")
>>>>>>>>>          public static WebArchive war() {
>>>>>>>>>              return ShrinkWrap.create(WebArchive.class,
>>>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>>>>>>>>                      .addClasses(QuoteTypeDao.class);
>>>>>>>>>          }
>>>>>>>>>
>>>>>>>>>          @Test
>>>>>>>>>          @OperateOnDeployment("archive")
>>>>>>>>>          public void test1() {
>>>>>>>>>              Quote quote = new Quote();
>>>>>>>>>              Promotion promotion = null;
>>>>>>>>>              List<QuoteType> quoteTypeList =
>>>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>>>              System.out.println("Quote type list size: " +
>>>>>>>>> quoteTypeList.size());
>>>>>>>>>              for (QuoteType quoteType : quoteTypeList) {
>>>>>>>>>                  System.out.println(quoteType.getName());
>>>>>>>>>                  // quoteGeneratorDao.generateQuote(quote,
>> promotion,
>>>>>>>>>                  // quoteType.getQuoteTypeCategories(),
>> quoteQuestions,
>>>>>>>>>                  // quoteInit, true);
>>>>>>>>>                  assertEquals(0, 1);
>>>>>>>>>              }
>>>>>>>>>              assertEquals(0, 1);
>>>>>>>>>          }
>>>>>>>>>
>>>>>>>>> can i not inject a CDI bean into the test using
>>>>>>>>> arquillian-tomee-remote?
>>>>>>>>>
>>>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>>>> It is not needed at all bit it appears in your stack. If it is a
>>>> copy
>>>>>>>>> paste
>>>>>>>>>> just drop it ;)
>>>>>>>>>>
>>>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>
>>>>>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
>>>> but i
>>>>>>>>>>> couldn't find any documentation.  is sirona a requirement for
>>>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
>>>>>>>>>>> if so,
>>>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>>>> <property name="javaagent">
>>>>>>>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>>>> </property>
>>>>>>>>>>>
>>>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
>>>> safe.
>>>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> thanks i added it using
>>>>>>>>>>>>> <property
>>>>>>>>>>>>>
>>>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>>>>>>>>
>>>>>>>>>>>>> fail to transform
>>>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported
>> with
>>>>>>>>>>>>> computeFrames option
>>>>>>>>>>>>>            at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>>>>>>>>            at
>>>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>>>> Source)
>>>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>>>
>>>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>>>
>>>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api
>> type
>>>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>>>>>> qualifiers
>>>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
>> WebBeansType:ENTERPRISE,
>>>>>>>>>>>>> Name:null, API
>>>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>>>> embedded
>>>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>> You can add it in libs property of arquillian container
>> config.
>>>>>>>>>>>>>> Just
>>>>>>>>>>>>> prefix
>>>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee lib
>>>> this
>>>>>>>>> way
>>>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> INFO: Downloading
>> org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>>>> please
>>>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send
>>>> the
>>>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>>>>>> Unable to
>>>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> is there any way to directly bring in the mysql driver from
>>>> maven
>>>>>>>>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>> You can theorically but I'd recommand you to write it in the
>>>>>>>>>>>>>>>> final
>>>>>>>>>>>>> module
>>>>>>>>>>>>>>>> instead of trying to use the parent which will be executed
>>>>>>>>>>>>>>>> before
>>>>>>>>> any
>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If A depends on B which depends on C then write your tests
>> in
>>>>>>>>>>>>>>>> A for
>>>>>>>>>>> the
>>>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>>>> (potentially
>>>>>>>>> using
>>>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>>>
>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>>>> and
>>>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case.
>>>> can
>>>>>>>>> the
>>>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does everything
>>>>>>>>>>>>>>>>> need to
>>>>>>>>>>> be
>>>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>>>> Arquilian
>>>>>>>>>>> Test"
>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>>>> instance)
>>>>>>>>> in a
>>>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which
>> are
>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>> modules
>>>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>>>> project.
>>>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>>>> You can set the property openejb.location (or the other
>>>>>>>>>>>>>>>>>> ones we
>>>>>>>>>>> have)
>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>>>>>>>>>>> properties
>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
>>>> maven
>>>>>>>>>>> build
>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
>>>> real
>>>>>>>>>>> server,
>>>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>>>> applications
>>>>>>>>> or
>>>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
>>>> (single
>>>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>>>> from the classpath + single test setup) and will save a
>> lot
>>>> of
>>>>>>>>>>> time.
>>>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
>>>> tests.
>>>>>>>>> CDI
>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
>> uncertain
>>>>>>>>>>>>>>>>>>> about
>>>>>>>>>>> how
>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>>>>>> normal as
>>>>>>>>> it
>>>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
>>>>>>>>>>>>>>>>>>> username
>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>>>> connect to
>>>>>>>>> the
>>>>>>>>>>>>> db?
>>>>>>>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>>>> "mydb",
>>>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> another question...is it better to start with Arquillian
>> or
>>>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
you don't need @Jars for that

why you get an exception is cause appcomposers knows mysql has no EE
classes so it is excluded from the "find" logic. @Jars means "grab the jars
matching this prefix and scan them to include them in the deployed app".

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le dim. 24 juin 2018 à 12:15, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> i tried adding test scope to pom.xml
> <dependency>
>              <groupId>mysql</groupId>
> <artifactId>mysql-connector-java</artifactId>
> <version>${mysql.connector.version}</version>
>              <scope>test</scope>
>          </dependency>
>
> also added mysql-connector-java-5.1.33.jar to the root of
> src/test/resources but i still get
> java.lang.IllegalArgumentException: mysql not found in classpath
>      at
>
> org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
>      at
>
> org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
>      at
>
> org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)
>
>
> On 24/06/18 12:01, Romain Manni-Bucau wrote:
> > Appcopposer loads classes in the classpath so add it as a test
> dependency.
> >
> > Le dim. 24 juin 2018 11:37, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> not much luck with arquillian.  i am trying ApplicationComposer again.
> >> now i understand the properties format
> >> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
> >> value = "new://Resource?type=DataSource"),
> >>           @ContainerProperties.Property(name = "sales.JdbcDriver", value
> >> = "com.mysql.jdbc.Driver"),
> >>           @ContainerProperties.Property(name = "sales.JdbcUrl", value =
> >> "jdbc:mysql://localhost:3306/sales"),
> >>           @ContainerProperties.Property(name = "sales.Username", value =
> >> "admin"),
> >>           @ContainerProperties.Property(name = "sales.Password", value =
> >> "blahblah") })
> >>
> >> but now i get
> >> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> >> resolve class com.mysql.jdbc.Driver
> >>       at
> >>
> >>
> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
> >>       at
> >>
> >>
> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
> >>
> >> how to bundle the mysql driver?  i tried
> >> @Jars("mysql")
> >>
> >> On 23/06/18 21:58, Romain Manni-Bucau wrote:
> >>> You need all your tested app needs (this is why classpath deploypent
> >>> solutions are easier to maintain).
> >>>
> >>> Maybe import our ziplock lib and use Mvn.Builder class if you are maven
> >>> based. It can help.
> >>>
> >>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> ah ok.  i found
> >>>> .addAsManifestResource(new
> ClassLoaderAsset("META-INF/persistence.xml"),
> >>>> "persistence.xml")
> >>>>
> >>>> in
> >>>>
> >>>>
> >>
> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
> >>>> but now i am back to
> >>>> SEVERE - CDI Beans module deployment failed
> >>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>> Name:null, API
> >>>>
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>        at
> >>>>
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>
> >>>> so i must have missed a required class somewhere
> >>>>
> >>>> On 23/06/18 18:53, Matthew Broadhead wrote:
> >>>>> do i need to copy the persistence.xml to src/test/resources/META-INF?
> >>>>> or can i specify its location somewhere in config?
> >>>>>
> >>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>> SEVERE - Invalid EjbModule(name=sales,
> >>>>>
> >> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>>>> SEVERE - Invalid WebModule(name=sales,
> >>>>>
> >> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>>>> INFO - Set the 'openejb.validation.output.level' system property to
> >>>>> VERBOSE for increased validation details.
> >>>>> SEVERE - Unable to deploy collapsed ear in war
> >>>>>
> >> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> >>>>> org.apache.openejb.config.ValidationFailedException: Module failed
> >>>>> validation. AppModule(name=sales)
> >>>>>       at
> >>>>>
> >>
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
> >>>>>       at
> >>>>>
> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
> >>>>>
> >>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
> >>>>>> You can but you need to add all the object graph in the archive.
> Here
> >>>>>> you
> >>>>>> miss an injection it seems (in your dao?).
> >>>>>>
> >>>>>> Side note: operatesondeployment and naming your archive is not
> needed
> >>>>>> here.
> >>>>>> It is useful when you deploy N > 1 archives.
> >>>>>>
> >>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> >>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>
> >>>>>>> i got the sample configuration from
> >>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> >> under
> >>>>>>> remote section.
> >>>>>>>
> >>>>>>> now my problem is that i can't inject the CDI bean
> >>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> qualifiers
> >>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>> for injection into Field Injection Point, field name :
> quoteTypeDao,
> >>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>>> Name:null, API
> >>>>>>>
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>>         at
> >>>>>>>
> >> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>>>>         at
> >>>>>>>
> >>>>>>>
> >>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
> >>>>>>> i created the @Deployment using
> >>>>>>> @Inject
> >>>>>>>         private QuoteTypeDao quoteTypeDao;
> >>>>>>>
> >>>>>>>         @Deployment(name = "archive")
> >>>>>>>         public static WebArchive war() {
> >>>>>>>             return ShrinkWrap.create(WebArchive.class,
> >>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
> >>>>>>>                     .addClasses(QuoteTypeDao.class);
> >>>>>>>         }
> >>>>>>>
> >>>>>>>         @Test
> >>>>>>>         @OperateOnDeployment("archive")
> >>>>>>>         public void test1() {
> >>>>>>>             Quote quote = new Quote();
> >>>>>>>             Promotion promotion = null;
> >>>>>>>             List<QuoteType> quoteTypeList =
> >>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
> >>>>>>>             System.out.println("Quote type list size: " +
> >>>>>>> quoteTypeList.size());
> >>>>>>>             for (QuoteType quoteType : quoteTypeList) {
> >>>>>>>                 System.out.println(quoteType.getName());
> >>>>>>>                 // quoteGeneratorDao.generateQuote(quote,
> promotion,
> >>>>>>>                 // quoteType.getQuoteTypeCategories(),
> quoteQuestions,
> >>>>>>>                 // quoteInit, true);
> >>>>>>>                 assertEquals(0, 1);
> >>>>>>>             }
> >>>>>>>             assertEquals(0, 1);
> >>>>>>>         }
> >>>>>>>
> >>>>>>> can i not inject a CDI bean into the test using
> >>>>>>> arquillian-tomee-remote?
> >>>>>>>
> >>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> >>>>>>>> It is not needed at all bit it appears in your stack. If it is a
> >> copy
> >>>>>>> paste
> >>>>>>>> just drop it ;)
> >>>>>>>>
> >>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> >>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>
> >>>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
> >> but i
> >>>>>>>>> couldn't find any documentation.  is sirona a requirement for
> >>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
> >>>>>>>>> if so,
> >>>>>>>>> then how do i exclude the mysql lib from the configuration?
> >>>>>>>>> <!-- we monitor the test with sirona -->
> >>>>>>>>> <property name="javaagent">
> >>>>>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >>>>>>>>> </property>
> >>>>>>>>>
> >>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
> >> safe.
> >>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>
> >>>>>>>>>>> thanks i added it using
> >>>>>>>>>>> <property
> >>>>>>>>>>>
> >>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>>>>>>>> but i get these errors (which don't seem to stop execution)
> >>>>>>>>>>>
> >>>>>>>>>>> fail to transform
> >>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>>>>>>>>> JSR/RET are not supported with computeFrames
> >>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported
> with
> >>>>>>>>>>> computeFrames option
> >>>>>>>>>>>           at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>>>>>>>>           at
> >> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >>>>>>>>> Source)
> >>>>>>>>>>> SEVERE - Can't create DataSource
> >>>>>>>>>>> java.lang.LinkageError: loader (instance of
> >>>>>>>>>>> java/net/URLClassLoader):
> >>>>>>>>>>> attempted  duplicate class definition for name:
> >>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>>>>>>>>
> >>>>>>>>>>> but this one is a stopper
> >>>>>>>>>>>
> >>>>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api
> type
> >>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>>>>>>>>> qualifiers
> >>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>>>>>>> quoteTypeDao,
> >>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian,
> WebBeansType:ENTERPRISE,
> >>>>>>>>>>> Name:null, API
> >>>>>>>>>>> Types:[java.lang.Object,uk.me
> >>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
> >>>>>>>>>
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>>>>>> i tried enabling remote support as i am trying remote not
> >> embedded
> >>>>>>>>>>> tomee.remote.support = true
> >>>>>>>>>>> # tomee.serialization.class.blacklist = *
> >>>>>>>>>>> tomee.serialization.class.whitelist = *
> >>>>>>>>>>>
> >>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>>>>>>>>> You can add it in libs property of arquillian container
> config.
> >>>>>>>>>>>> Just
> >>>>>>>>>>> prefix
> >>>>>>>>>>>> the coords with mvn:.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>>>>>>>>
> >>>>>>>>>>>> It is a multiline property so you can add N libs to tomee lib
> >> this
> >>>>>>> way
> >>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>
> >>>>>>>>>>>>> INFO: Downloading
> org.apache.tomee:apache-tomee:7.0.3:zip:plus
> >>>>>>> please
> >>>>>>>>>>>>> wait...
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> i have an arquillian test running up ok but it is complaining
> >>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send
> >> the
> >>>>>>>>>>>>> following stack trace and this message to
> >>>>>>>>>>>>> users@tomee.apache.org :
> >>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
> >>>>>>> Unable to
> >>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> is there any way to directly bring in the mysql driver from
> >> maven
> >>>>>>>>>>>>> central?  or do i need to download manually and put it into
> >>>>>>>>>>>>> src/test/tomee/lib?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>> You can theorically but I'd recommand you to write it in the
> >>>>>>>>>>>>>> final
> >>>>>>>>>>> module
> >>>>>>>>>>>>>> instead of trying to use the parent which will be executed
> >>>>>>>>>>>>>> before
> >>>>>>> any
> >>>>>>>>>>>>> other
> >>>>>>>>>>>>>> modules.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> If A depends on B which depends on C then write your tests
> in
> >>>>>>>>>>>>>> A for
> >>>>>>>>> the
> >>>>>>>>>>>>>> complete app tests and write unit tests in B and C
> >> (potentially
> >>>>>>> using
> >>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> For reference:
> >>>>>>>>>>>>>>
> >> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>>>>> and
> >>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case.
> >> can
> >>>>>>> the
> >>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does everything
> >>>>>>>>>>>>>>> need to
> >>>>>>>>> be
> >>>>>>>>>>>>>>> done through http? looking at
> >>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
> >>>> Arquilian
> >>>>>>>>> Test"
> >>>>>>>>>>>>> it
> >>>>>>>>>>>>>>> looks as if beans can be injected...
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
> >> instance)
> >>>>>>> in a
> >>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which
> are
> >>>>>>>>>>>>>>> all
> >>>>>>>>>>> modules
> >>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
> >> project.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>>>> You can set the property openejb.location (or the other
> >>>>>>>>>>>>>>>> ones we
> >>>>>>>>> have)
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
> >>>>>>>>> properties
> >>>>>>>>>>> is
> >>>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
> >> maven
> >>>>>>>>> build
> >>>>>>>>>>>>> but
> >>>>>>>>>>>>>>> it
> >>>>>>>>>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
> >> real
> >>>>>>>>> server,
> >>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
> >>>>>>>>>>>>>>>> applications
> >>>>>>> or
> >>>>>>>>>>>>>>>> frameworks, TomEE,
> >>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
> >> (single
> >>>>>>>>>>>>> deployment
> >>>>>>>>>>>>>>>> from the classpath + single test setup) and will save a
> lot
> >> of
> >>>>>>>>> time.
> >>>>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> >>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
> >> tests.
> >>>>>>> CDI
> >>>>>>>>> is
> >>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little
> uncertain
> >>>>>>>>>>>>>>>>> about
> >>>>>>>>> how
> >>>>>>>>>>>>> to
> >>>>>>>>>>>>>>>>> load a test database.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> i was going to start by just loading the database as
> >>>>>>>>>>>>>>>>> normal as
> >>>>>>> it
> >>>>>>>>>>> is a
> >>>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
> >>>>>>>>>>>>>>>>> username
> >>>>>>>>> and
> >>>>>>>>>>>>>>>>> password or any other properties that are needed to
> >>>>>>>>>>>>>>>>> connect to
> >>>>>>> the
> >>>>>>>>>>> db?
> >>>>>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
> >>>>>>> "mydb",
> >>>>>>>>>>>>> value
> >>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> another question...is it better to start with Arquillian
> or
> >>>>>>>>>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>>>>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
i tried adding test scope to pom.xml
<dependency>
             <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
             <scope>test</scope>
         </dependency>

also added mysql-connector-java-5.1.33.jar to the root of 
src/test/resources but i still get
java.lang.IllegalArgumentException: mysql not found in classpath
     at 
org.apache.openejb.testing.ApplicationComposers.findFiles(ApplicationComposers.java:1020)
     at 
org.apache.openejb.testing.ApplicationComposers.addWebApp(ApplicationComposers.java:899)
     at 
org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:651)


On 24/06/18 12:01, Romain Manni-Bucau wrote:
> Appcopposer loads classes in the classpath so add it as a test dependency.
>
> Le dim. 24 juin 2018 11:37, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> not much luck with arquillian.  i am trying ApplicationComposer again.
>> now i understand the properties format
>> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
>> value = "new://Resource?type=DataSource"),
>>           @ContainerProperties.Property(name = "sales.JdbcDriver", value
>> = "com.mysql.jdbc.Driver"),
>>           @ContainerProperties.Property(name = "sales.JdbcUrl", value =
>> "jdbc:mysql://localhost:3306/sales"),
>>           @ContainerProperties.Property(name = "sales.Username", value =
>> "admin"),
>>           @ContainerProperties.Property(name = "sales.Password", value =
>> "blahblah") })
>>
>> but now i get
>> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>> resolve class com.mysql.jdbc.Driver
>>       at
>>
>> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
>>       at
>>
>> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
>>
>> how to bundle the mysql driver?  i tried
>> @Jars("mysql")
>>
>> On 23/06/18 21:58, Romain Manni-Bucau wrote:
>>> You need all your tested app needs (this is why classpath deploypent
>>> solutions are easier to maintain).
>>>
>>> Maybe import our ziplock lib and use Mvn.Builder class if you are maven
>>> based. It can help.
>>>
>>> Le sam. 23 juin 2018 20:09, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> ah ok.  i found
>>>> .addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"),
>>>> "persistence.xml")
>>>>
>>>> in
>>>>
>>>>
>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
>>>> but now i am back to
>>>> SEVERE - CDI Beans module deployment failed
>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>> Name:null, API
>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>        at
>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>
>>>> so i must have missed a required class somewhere
>>>>
>>>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>>>> do i need to copy the persistence.xml to src/test/resources/META-INF?
>>>>> or can i specify its location somewhere in config?
>>>>>
>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>> SEVERE - Invalid EjbModule(name=sales,
>>>>>
>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>>>> SEVERE - Invalid WebModule(name=sales,
>>>>>
>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>>>> INFO - Set the 'openejb.validation.output.level' system property to
>>>>> VERBOSE for increased validation details.
>>>>> SEVERE - Unable to deploy collapsed ear in war
>>>>>
>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
>>>>> org.apache.openejb.config.ValidationFailedException: Module failed
>>>>> validation. AppModule(name=sales)
>>>>>       at
>>>>>
>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>>>>>       at
>>>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
>>>>>
>>>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>>>> You can but you need to add all the object graph in the archive. Here
>>>>>> you
>>>>>> miss an injection it seems (in your dao?).
>>>>>>
>>>>>> Side note: operatesondeployment and naming your archive is not needed
>>>>>> here.
>>>>>> It is useful when you deploy N > 1 archives.
>>>>>>
>>>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>
>>>>>>> i got the sample configuration from
>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>> under
>>>>>>> remote section.
>>>>>>>
>>>>>>> now my problem is that i can't inject the CDI bean
>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>> Name:null, API
>>>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>         at
>>>>>>>
>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>>>         at
>>>>>>>
>>>>>>>
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>>>>>>> i created the @Deployment using
>>>>>>> @Inject
>>>>>>>         private QuoteTypeDao quoteTypeDao;
>>>>>>>
>>>>>>>         @Deployment(name = "archive")
>>>>>>>         public static WebArchive war() {
>>>>>>>             return ShrinkWrap.create(WebArchive.class,
>>>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>>>>>>                     .addClasses(QuoteTypeDao.class);
>>>>>>>         }
>>>>>>>
>>>>>>>         @Test
>>>>>>>         @OperateOnDeployment("archive")
>>>>>>>         public void test1() {
>>>>>>>             Quote quote = new Quote();
>>>>>>>             Promotion promotion = null;
>>>>>>>             List<QuoteType> quoteTypeList =
>>>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>>>             System.out.println("Quote type list size: " +
>>>>>>> quoteTypeList.size());
>>>>>>>             for (QuoteType quoteType : quoteTypeList) {
>>>>>>>                 System.out.println(quoteType.getName());
>>>>>>>                 // quoteGeneratorDao.generateQuote(quote, promotion,
>>>>>>>                 // quoteType.getQuoteTypeCategories(), quoteQuestions,
>>>>>>>                 // quoteInit, true);
>>>>>>>                 assertEquals(0, 1);
>>>>>>>             }
>>>>>>>             assertEquals(0, 1);
>>>>>>>         }
>>>>>>>
>>>>>>> can i not inject a CDI bean into the test using
>>>>>>> arquillian-tomee-remote?
>>>>>>>
>>>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>>>> It is not needed at all bit it appears in your stack. If it is a
>> copy
>>>>>>> paste
>>>>>>>> just drop it ;)
>>>>>>>>
>>>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
>> but i
>>>>>>>>> couldn't find any documentation.  is sirona a requirement for
>>>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
>>>>>>>>> if so,
>>>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>>>> <property name="javaagent">
>>>>>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>>>> </property>
>>>>>>>>>
>>>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
>> safe.
>>>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>
>>>>>>>>>>> thanks i added it using
>>>>>>>>>>> <property
>>>>>>>>>>>
>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>>>>>>
>>>>>>>>>>> fail to transform
>>>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>>>>>>>>>>> computeFrames option
>>>>>>>>>>>           at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>>>>>>           at
>> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>>>> Source)
>>>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>>>
>>>>>>>>>>> but this one is a stopper
>>>>>>>>>>>
>>>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>>>> qualifiers
>>>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>>>> quoteTypeDao,
>>>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>>>> Name:null, API
>>>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>>>> i tried enabling remote support as i am trying remote not
>> embedded
>>>>>>>>>>> tomee.remote.support = true
>>>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>>>
>>>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>>>> You can add it in libs property of arquillian container config.
>>>>>>>>>>>> Just
>>>>>>>>>>> prefix
>>>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>>>
>>>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>>>
>>>>>>>>>>>> It is a multiline property so you can add N libs to tomee lib
>> this
>>>>>>> way
>>>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>>>> please
>>>>>>>>>>>>> wait...
>>>>>>>>>>>>>
>>>>>>>>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send
>> the
>>>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>>>> Unable to
>>>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>>>
>>>>>>>>>>>>> is there any way to directly bring in the mysql driver from
>> maven
>>>>>>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>> You can theorically but I'd recommand you to write it in the
>>>>>>>>>>>>>> final
>>>>>>>>>>> module
>>>>>>>>>>>>>> instead of trying to use the parent which will be executed
>>>>>>>>>>>>>> before
>>>>>>> any
>>>>>>>>>>>>> other
>>>>>>>>>>>>>> modules.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If A depends on B which depends on C then write your tests in
>>>>>>>>>>>>>> A for
>>>>>>>>> the
>>>>>>>>>>>>>> complete app tests and write unit tests in B and C
>> (potentially
>>>>>>> using
>>>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For reference:
>>>>>>>>>>>>>>
>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>>>> and
>>>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case.
>> can
>>>>>>> the
>>>>>>>>>>>>>>> tests inject CDI beans from the webapps or does everything
>>>>>>>>>>>>>>> need to
>>>>>>>>> be
>>>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>>>> Arquilian
>>>>>>>>> Test"
>>>>>>>>>>>>> it
>>>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
>> instance)
>>>>>>> in a
>>>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which are
>>>>>>>>>>>>>>> all
>>>>>>>>>>> modules
>>>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
>> project.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>>>> You can set the property openejb.location (or the other
>>>>>>>>>>>>>>>> ones we
>>>>>>>>> have)
>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>>>>>>>>> properties
>>>>>>>>>>> is
>>>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
>> maven
>>>>>>>>> build
>>>>>>>>>>>>> but
>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
>> real
>>>>>>>>> server,
>>>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>>>> applications
>>>>>>> or
>>>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
>> (single
>>>>>>>>>>>>> deployment
>>>>>>>>>>>>>>>> from the classpath + single test setup) and will save a lot
>> of
>>>>>>>>> time.
>>>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
>> tests.
>>>>>>> CDI
>>>>>>>>> is
>>>>>>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain
>>>>>>>>>>>>>>>>> about
>>>>>>>>> how
>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>>>> normal as
>>>>>>> it
>>>>>>>>>>> is a
>>>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
>>>>>>>>>>>>>>>>> username
>>>>>>>>> and
>>>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>>>> connect to
>>>>>>> the
>>>>>>>>>>> db?
>>>>>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>>>> "mydb",
>>>>>>>>>>>>> value
>>>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Appcopposer loads classes in the classpath so add it as a test dependency.

Le dim. 24 juin 2018 11:37, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> not much luck with arquillian.  i am trying ApplicationComposer again.
> now i understand the properties format
> @ContainerProperties({ @ContainerProperties.Property(name = "sales",
> value = "new://Resource?type=DataSource"),
>          @ContainerProperties.Property(name = "sales.JdbcDriver", value
> = "com.mysql.jdbc.Driver"),
>          @ContainerProperties.Property(name = "sales.JdbcUrl", value =
> "jdbc:mysql://localhost:3306/sales"),
>          @ContainerProperties.Property(name = "sales.Username", value =
> "admin"),
>          @ContainerProperties.Property(name = "sales.Password", value =
> "blahblah") })
>
> but now i get
> org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> resolve class com.mysql.jdbc.Driver
>      at
>
> org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
>      at
>
> org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)
>
> how to bundle the mysql driver?  i tried
> @Jars("mysql")
>
> On 23/06/18 21:58, Romain Manni-Bucau wrote:
> > You need all your tested app needs (this is why classpath deploypent
> > solutions are easier to maintain).
> >
> > Maybe import our ziplock lib and use Mvn.Builder class if you are maven
> > based. It can help.
> >
> > Le sam. 23 juin 2018 20:09, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> ah ok.  i found
> >> .addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"),
> >> "persistence.xml")
> >>
> >> in
> >>
> >>
> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
> >>
> >> but now i am back to
> >> SEVERE - CDI Beans module deployment failed
> >> org.apache.webbeans.exception.WebBeansDeploymentException:
> >> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >> Qualifiers: [@javax.enterprise.inject.Default()]
> >> for injection into Field Injection Point, field name : quoteTypeDao,
> >> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >> Name:null, API
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>       at
> >> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>
> >> so i must have missed a required class somewhere
> >>
> >> On 23/06/18 18:53, Matthew Broadhead wrote:
> >>> do i need to copy the persistence.xml to src/test/resources/META-INF?
> >>> or can i specify its location somewhere in config?
> >>>
> >>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>> SEVERE - Invalid EjbModule(name=sales,
> >>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
> >>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> >>> SEVERE - Invalid WebModule(name=sales,
> >>>
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> >>> INFO - Set the 'openejb.validation.output.level' system property to
> >>> VERBOSE for increased validation details.
> >>> SEVERE - Unable to deploy collapsed ear in war
> >>>
> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> >>> org.apache.openejb.config.ValidationFailedException: Module failed
> >>> validation. AppModule(name=sales)
> >>>      at
> >>>
> >>
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
> >>>      at
> >>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
> >>>
> >>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
> >>>> You can but you need to add all the object graph in the archive. Here
> >>>> you
> >>>> miss an injection it seems (in your dao?).
> >>>>
> >>>> Side note: operatesondeployment and naming your archive is not needed
> >>>> here.
> >>>> It is useful when you deploy N > 1 archives.
> >>>>
> >>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> >>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>
> >>>>> i got the sample configuration from
> >>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> under
> >>>>> remote section.
> >>>>>
> >>>>> now my problem is that i can't inject the CDI bean
> >>>>> SEVERE - CDI Beans module deployment failed
> >>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>> Name:null, API
> >>>>>
> >>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>>>>
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>        at
> >>>>>
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>>>        at
> >>>>>
> >>>>>
> >>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
> >>
> >>>>>
> >>>>> i created the @Deployment using
> >>>>> @Inject
> >>>>>        private QuoteTypeDao quoteTypeDao;
> >>>>>
> >>>>>        @Deployment(name = "archive")
> >>>>>        public static WebArchive war() {
> >>>>>            return ShrinkWrap.create(WebArchive.class,
> >>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
> >>>>>                    .addClasses(QuoteTypeDao.class);
> >>>>>        }
> >>>>>
> >>>>>        @Test
> >>>>>        @OperateOnDeployment("archive")
> >>>>>        public void test1() {
> >>>>>            Quote quote = new Quote();
> >>>>>            Promotion promotion = null;
> >>>>>            List<QuoteType> quoteTypeList =
> >>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
> >>>>>            System.out.println("Quote type list size: " +
> >>>>> quoteTypeList.size());
> >>>>>            for (QuoteType quoteType : quoteTypeList) {
> >>>>>                System.out.println(quoteType.getName());
> >>>>>                // quoteGeneratorDao.generateQuote(quote, promotion,
> >>>>>                // quoteType.getQuoteTypeCategories(), quoteQuestions,
> >>>>>                // quoteInit, true);
> >>>>>                assertEquals(0, 1);
> >>>>>            }
> >>>>>            assertEquals(0, 1);
> >>>>>        }
> >>>>>
> >>>>> can i not inject a CDI bean into the test using
> >>>>> arquillian-tomee-remote?
> >>>>>
> >>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> >>>>>> It is not needed at all bit it appears in your stack. If it is a
> copy
> >>>>> paste
> >>>>>> just drop it ;)
> >>>>>>
> >>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> >>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>
> >>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html
> but i
> >>>>>>> couldn't find any documentation.  is sirona a requirement for
> >>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
> >>>>>>> if so,
> >>>>>>> then how do i exclude the mysql lib from the configuration?
> >>>>>>> <!-- we monitor the test with sirona -->
> >>>>>>> <property name="javaagent">
> >>>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >>>>>>> </property>
> >>>>>>>
> >>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not
> safe.
> >>>>>>>>
> >>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>
> >>>>>>>>> thanks i added it using
> >>>>>>>>> <property
> >>>>>>>>>
> >> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>>>>>>
> >>>>>>>>> but i get these errors (which don't seem to stop execution)
> >>>>>>>>>
> >>>>>>>>> fail to transform
> >>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>>>>>>> JSR/RET are not supported with computeFrames
> >>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
> >>>>>>>>> computeFrames option
> >>>>>>>>>          at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>>>>>>          at
> org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >>>>>>> Source)
> >>>>>>>>> SEVERE - Can't create DataSource
> >>>>>>>>> java.lang.LinkageError: loader (instance of
> >>>>>>>>> java/net/URLClassLoader):
> >>>>>>>>> attempted  duplicate class definition for name:
> >>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>>>>>>
> >>>>>>>>> but this one is a stopper
> >>>>>>>>>
> >>>>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>>>>>>> qualifiers
> >>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>>>> for injection into Field Injection Point, field name :
> >>>>>>>>> quoteTypeDao,
> >>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>>>>> Name:null, API
> >>>>>>>>> Types:[java.lang.Object,uk.me
> >>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
> >>>>>>>
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>>>>>>> i tried enabling remote support as i am trying remote not
> embedded
> >>>>>>>>> tomee.remote.support = true
> >>>>>>>>> # tomee.serialization.class.blacklist = *
> >>>>>>>>> tomee.serialization.class.whitelist = *
> >>>>>>>>>
> >>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>>>>>>> You can add it in libs property of arquillian container config.
> >>>>>>>>>> Just
> >>>>>>>>> prefix
> >>>>>>>>>> the coords with mvn:.
> >>>>>>>>>>
> >>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>>>>>>
> >>>>>>>>>> It is a multiline property so you can add N libs to tomee lib
> this
> >>>>> way
> >>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>
> >>>>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
> >>>>> please
> >>>>>>>>>>> wait...
> >>>>>>>>>>>
> >>>>>>>>>>> i have an arquillian test running up ok but it is complaining
> >>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send
> the
> >>>>>>>>>>> following stack trace and this message to
> >>>>>>>>>>> users@tomee.apache.org :
> >>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
> >>>>> Unable to
> >>>>>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>>>>
> >>>>>>>>>>> is there any way to directly bring in the mysql driver from
> maven
> >>>>>>>>>>> central?  or do i need to download manually and put it into
> >>>>>>>>>>> src/test/tomee/lib?
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>>>>>>> You can theorically but I'd recommand you to write it in the
> >>>>>>>>>>>> final
> >>>>>>>>> module
> >>>>>>>>>>>> instead of trying to use the parent which will be executed
> >>>>>>>>>>>> before
> >>>>> any
> >>>>>>>>>>> other
> >>>>>>>>>>>> modules.
> >>>>>>>>>>>>
> >>>>>>>>>>>> If A depends on B which depends on C then write your tests in
> >>>>>>>>>>>> A for
> >>>>>>> the
> >>>>>>>>>>>> complete app tests and write unit tests in B and C
> (potentially
> >>>>> using
> >>>>>>>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>>>>>>
> >>>>>>>>>>>> For reference:
> >>>>>>>>>>>>
> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>>>> and
> >>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>>>>>>
> >>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>
> >>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case.
> can
> >>>>> the
> >>>>>>>>>>>>> tests inject CDI beans from the webapps or does everything
> >>>>>>>>>>>>> need to
> >>>>>>> be
> >>>>>>>>>>>>> done through http? looking at
> >>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
> >> Arquilian
> >>>>>>> Test"
> >>>>>>>>>>> it
> >>>>>>>>>>>>> looks as if beans can be injected...
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> is it possible to create the tests (or at least TomEE
> instance)
> >>>>> in a
> >>>>>>>>>>>>> parent pom?  i need to run several webapps at once which are
> >>>>>>>>>>>>> all
> >>>>>>>>> modules
> >>>>>>>>>>>>> of the parent.  i think code is discouraged in parent
> project.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>>>>>>> You can set the property openejb.location (or the other
> >>>>>>>>>>>>>> ones we
> >>>>>>> have)
> >>>>>>>>>>> to
> >>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
> >>>>>>> properties
> >>>>>>>>> is
> >>>>>>>>>>>>>> that it is filtered during the test and doesnt require a
> maven
> >>>>>>> build
> >>>>>>>>>>> but
> >>>>>>>>>>>>> it
> >>>>>>>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a
> real
> >>>>>>> server,
> >>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
> >>>>>>>>>>>>>> applications
> >>>>> or
> >>>>>>>>>>>>>> frameworks, TomEE,
> >>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app
> (single
> >>>>>>>>>>> deployment
> >>>>>>>>>>>>>> from the classpath + single test setup) and will save a lot
> of
> >>>>>>> time.
> >>>>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> >>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some
> tests.
> >>>>> CDI
> >>>>>>> is
> >>>>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain
> >>>>>>>>>>>>>>> about
> >>>>>>> how
> >>>>>>>>>>> to
> >>>>>>>>>>>>>>> load a test database.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> i was going to start by just loading the database as
> >>>>>>>>>>>>>>> normal as
> >>>>> it
> >>>>>>>>> is a
> >>>>>>>>>>>>>>> copy of production database.  but how do i specify the
> >>>>>>>>>>>>>>> username
> >>>>>>> and
> >>>>>>>>>>>>>>> password or any other properties that are needed to
> >>>>>>>>>>>>>>> connect to
> >>>>> the
> >>>>>>>>> db?
> >>>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
> >>>>> "mydb",
> >>>>>>>>>>> value
> >>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> another question...is it better to start with Arquillian or
> >>>>>>>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
not much luck with arquillian.  i am trying ApplicationComposer again.  
now i understand the properties format
@ContainerProperties({ @ContainerProperties.Property(name = "sales", 
value = "new://Resource?type=DataSource"),
         @ContainerProperties.Property(name = "sales.JdbcDriver", value 
= "com.mysql.jdbc.Driver"),
         @ContainerProperties.Property(name = "sales.JdbcUrl", value = 
"jdbc:mysql://localhost:3306/sales"),
         @ContainerProperties.Property(name = "sales.Username", value = 
"admin"),
         @ContainerProperties.Property(name = "sales.Password", value = 
"blahblah") })

but now i get
org.apache.xbean.propertyeditor.PropertyEditorException: Unable to 
resolve class com.mysql.jdbc.Driver
     at 
org.apache.xbean.propertyeditor.ClassEditor.toObjectImpl(ClassEditor.java:43)
     at 
org.apache.xbean.propertyeditor.AbstractConverter.toObject(AbstractConverter.java:86)

how to bundle the mysql driver?  i tried
@Jars("mysql")

On 23/06/18 21:58, Romain Manni-Bucau wrote:
> You need all your tested app needs (this is why classpath deploypent
> solutions are easier to maintain).
>
> Maybe import our ziplock lib and use Mvn.Builder class if you are maven
> based. It can help.
>
> Le sam. 23 juin 2018 20:09, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> ah ok.  i found
>> .addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"),
>> "persistence.xml")
>>
>> in
>>
>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
>>
>> but now i am back to
>> SEVERE - CDI Beans module deployment failed
>> org.apache.webbeans.exception.WebBeansDeploymentException:
>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>> Qualifiers: [@javax.enterprise.inject.Default()]
>> for injection into Field Injection Point, field name : quoteTypeDao,
>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>> Name:null, API
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>       at
>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>
>> so i must have missed a required class somewhere
>>
>> On 23/06/18 18:53, Matthew Broadhead wrote:
>>> do i need to copy the persistence.xml to src/test/resources/META-INF?
>>> or can i specify its location somewhere in config?
>>>
>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>> SEVERE - Invalid EjbModule(name=sales,
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>> SEVERE - FAIL ... sales:    Missing required persistence.xml for
>>> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
>>> SEVERE - Invalid WebModule(name=sales,
>>> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
>>> INFO - Set the 'openejb.validation.output.level' system property to
>>> VERBOSE for increased validation details.
>>> SEVERE - Unable to deploy collapsed ear in war
>>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
>>> org.apache.openejb.config.ValidationFailedException: Module failed
>>> validation. AppModule(name=sales)
>>>      at
>>>
>> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>>>      at
>>> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
>>>
>>> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>>>> You can but you need to add all the object graph in the archive. Here
>>>> you
>>>> miss an injection it seems (in your dao?).
>>>>
>>>> Side note: operatesondeployment and naming your archive is not needed
>>>> here.
>>>> It is useful when you deploy N > 1 archives.
>>>>
>>>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>
>>>>> i got the sample configuration from
>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html under
>>>>> remote section.
>>>>>
>>>>> now my problem is that i can't inject the CDI bean
>>>>> SEVERE - CDI Beans module deployment failed
>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>> Name:null, API
>>>>>
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>        at
>>>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>>>        at
>>>>>
>>>>>
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>>
>>>>>
>>>>> i created the @Deployment using
>>>>> @Inject
>>>>>        private QuoteTypeDao quoteTypeDao;
>>>>>
>>>>>        @Deployment(name = "archive")
>>>>>        public static WebArchive war() {
>>>>>            return ShrinkWrap.create(WebArchive.class,
>>>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>>>>                    .addClasses(QuoteTypeDao.class);
>>>>>        }
>>>>>
>>>>>        @Test
>>>>>        @OperateOnDeployment("archive")
>>>>>        public void test1() {
>>>>>            Quote quote = new Quote();
>>>>>            Promotion promotion = null;
>>>>>            List<QuoteType> quoteTypeList =
>>>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>>>            System.out.println("Quote type list size: " +
>>>>> quoteTypeList.size());
>>>>>            for (QuoteType quoteType : quoteTypeList) {
>>>>>                System.out.println(quoteType.getName());
>>>>>                // quoteGeneratorDao.generateQuote(quote, promotion,
>>>>>                // quoteType.getQuoteTypeCategories(), quoteQuestions,
>>>>>                // quoteInit, true);
>>>>>                assertEquals(0, 1);
>>>>>            }
>>>>>            assertEquals(0, 1);
>>>>>        }
>>>>>
>>>>> can i not inject a CDI bean into the test using
>>>>> arquillian-tomee-remote?
>>>>>
>>>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>>>> It is not needed at all bit it appears in your stack. If it is a copy
>>>>> paste
>>>>>> just drop it ;)
>>>>>>
>>>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>
>>>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html but i
>>>>>>> couldn't find any documentation.  is sirona a requirement for
>>>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
>>>>>>> if so,
>>>>>>> then how do i exclude the mysql lib from the configuration?
>>>>>>> <!-- we monitor the test with sirona -->
>>>>>>> <property name="javaagent">
>>>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>>>> </property>
>>>>>>>
>>>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
>>>>>>>>
>>>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> thanks i added it using
>>>>>>>>> <property
>>>>>>>>>
>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>>>>
>>>>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>>>>
>>>>>>>>> fail to transform
>>>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>>>>>>>>> computeFrames option
>>>>>>>>>          at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>>>>          at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>>>> Source)
>>>>>>>>> SEVERE - Can't create DataSource
>>>>>>>>> java.lang.LinkageError: loader (instance of
>>>>>>>>> java/net/URLClassLoader):
>>>>>>>>> attempted  duplicate class definition for name:
>>>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>>>
>>>>>>>>> but this one is a stopper
>>>>>>>>>
>>>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
>>>>>>>>> qualifiers
>>>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>>>> for injection into Field Injection Point, field name :
>>>>>>>>> quoteTypeDao,
>>>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>>>> Name:null, API
>>>>>>>>> Types:[java.lang.Object,uk.me
>>>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>>>>> i tried enabling remote support as i am trying remote not embedded
>>>>>>>>> tomee.remote.support = true
>>>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>>>
>>>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>>>> You can add it in libs property of arquillian container config.
>>>>>>>>>> Just
>>>>>>>>> prefix
>>>>>>>>>> the coords with mvn:.
>>>>>>>>>>
>>>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>>>
>>>>>>>>>> It is a multiline property so you can add N libs to tomee lib this
>>>>> way
>>>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>
>>>>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>>>> please
>>>>>>>>>>> wait...
>>>>>>>>>>>
>>>>>>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send the
>>>>>>>>>>> following stack trace and this message to
>>>>>>>>>>> users@tomee.apache.org :
>>>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>>>> Unable to
>>>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>>>
>>>>>>>>>>> is there any way to directly bring in the mysql driver from maven
>>>>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>>>> You can theorically but I'd recommand you to write it in the
>>>>>>>>>>>> final
>>>>>>>>> module
>>>>>>>>>>>> instead of trying to use the parent which will be executed
>>>>>>>>>>>> before
>>>>> any
>>>>>>>>>>> other
>>>>>>>>>>>> modules.
>>>>>>>>>>>>
>>>>>>>>>>>> If A depends on B which depends on C then write your tests in
>>>>>>>>>>>> A for
>>>>>>> the
>>>>>>>>>>>> complete app tests and write unit tests in B and C (potentially
>>>>> using
>>>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>>>
>>>>>>>>>>>> For reference:
>>>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>>>> and
>>>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>>>
>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case. can
>>>>> the
>>>>>>>>>>>>> tests inject CDI beans from the webapps or does everything
>>>>>>>>>>>>> need to
>>>>>>> be
>>>>>>>>>>>>> done through http? looking at
>>>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
>> Arquilian
>>>>>>> Test"
>>>>>>>>>>> it
>>>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>>>
>>>>>>>>>>>>> is it possible to create the tests (or at least TomEE instance)
>>>>> in a
>>>>>>>>>>>>> parent pom?  i need to run several webapps at once which are
>>>>>>>>>>>>> all
>>>>>>>>> modules
>>>>>>>>>>>>> of the parent.  i think code is discouraged in parent project.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>>>> You can set the property openejb.location (or the other
>>>>>>>>>>>>>> ones we
>>>>>>> have)
>>>>>>>>>>> to
>>>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>>>>>>> properties
>>>>>>>>> is
>>>>>>>>>>>>>> that it is filtered during the test and doesnt require a maven
>>>>>>> build
>>>>>>>>>>> but
>>>>>>>>>>>>> it
>>>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Arquillian is great to test complete application*s* in a real
>>>>>>> server,
>>>>>>>>>>>>>> ApplicationComposer is good to test small parts of
>>>>>>>>>>>>>> applications
>>>>> or
>>>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>>>>>>>>>>> deployment
>>>>>>>>>>>>>> from the classpath + single test setup) and will save a lot of
>>>>>>> time.
>>>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
>>>>> CDI
>>>>>>> is
>>>>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain
>>>>>>>>>>>>>>> about
>>>>>>> how
>>>>>>>>>>> to
>>>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> i was going to start by just loading the database as
>>>>>>>>>>>>>>> normal as
>>>>> it
>>>>>>>>> is a
>>>>>>>>>>>>>>> copy of production database.  but how do i specify the
>>>>>>>>>>>>>>> username
>>>>>>> and
>>>>>>>>>>>>>>> password or any other properties that are needed to
>>>>>>>>>>>>>>> connect to
>>>>> the
>>>>>>>>> db?
>>>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
>>>>> "mydb",
>>>>>>>>>>> value
>>>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
You need all your tested app needs (this is why classpath deploypent
solutions are easier to maintain).

Maybe import our ziplock lib and use Mvn.Builder class if you are maven
based. It can help.

Le sam. 23 juin 2018 20:09, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> ah ok.  i found
> .addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"),
> "persistence.xml")
>
> in
>
> http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java
>
> but now i am back to
> SEVERE - CDI Beans module deployment failed
> org.apache.webbeans.exception.WebBeansDeploymentException:
> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> Qualifiers: [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name : quoteTypeDao,
> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> Name:null, API
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>      at
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>
> so i must have missed a required class somewhere
>
> On 23/06/18 18:53, Matthew Broadhead wrote:
> > do i need to copy the persistence.xml to src/test/resources/META-INF?
> > or can i specify its location somewhere in config?
> >
> > SEVERE - FAIL ... sales:    Missing required persistence.xml for
> > @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> > SEVERE - Invalid EjbModule(name=sales,
> > path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> > SEVERE - FAIL ... sales:    Missing required persistence.xml for
> > @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> > SEVERE - Invalid WebModule(name=sales,
> > path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> > INFO - Set the 'openejb.validation.output.level' system property to
> > VERBOSE for increased validation details.
> > SEVERE - Unable to deploy collapsed ear in war
> > StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> > org.apache.openejb.config.ValidationFailedException: Module failed
> > validation. AppModule(name=sales)
> >     at
> >
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
> >     at
> > org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
> >
> > On 23/06/18 13:30, Romain Manni-Bucau wrote:
> >> You can but you need to add all the object graph in the archive. Here
> >> you
> >> miss an injection it seems (in your dao?).
> >>
> >> Side note: operatesondeployment and naming your archive is not needed
> >> here.
> >> It is useful when you deploy N > 1 archives.
> >>
> >> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> >> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>
> >>> i got the sample configuration from
> >>> http://tomee.apache.org/developer/testing/arquillian/index.html under
> >>> remote section.
> >>>
> >>> now my problem is that i can't inject the CDI bean
> >>> SEVERE - CDI Beans module deployment failed
> >>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>> Name:null, API
> >>>
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> >>>
> >>>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>
> >>>       at
> >>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
> >>>       at
> >>>
> >>>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>
> >>>
> >>>
> >>> i created the @Deployment using
> >>> @Inject
> >>>       private QuoteTypeDao quoteTypeDao;
> >>>
> >>>       @Deployment(name = "archive")
> >>>       public static WebArchive war() {
> >>>           return ShrinkWrap.create(WebArchive.class,
> >>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
> >>>                   .addClasses(QuoteTypeDao.class);
> >>>       }
> >>>
> >>>       @Test
> >>>       @OperateOnDeployment("archive")
> >>>       public void test1() {
> >>>           Quote quote = new Quote();
> >>>           Promotion promotion = null;
> >>>           List<QuoteType> quoteTypeList =
> >>> quoteTypeDao.selectQuoteTypes(promotion, true);
> >>>           System.out.println("Quote type list size: " +
> >>> quoteTypeList.size());
> >>>           for (QuoteType quoteType : quoteTypeList) {
> >>>               System.out.println(quoteType.getName());
> >>>               // quoteGeneratorDao.generateQuote(quote, promotion,
> >>>               // quoteType.getQuoteTypeCategories(), quoteQuestions,
> >>>               // quoteInit, true);
> >>>               assertEquals(0, 1);
> >>>           }
> >>>           assertEquals(0, 1);
> >>>       }
> >>>
> >>> can i not inject a CDI bean into the test using
> >>> arquillian-tomee-remote?
> >>>
> >>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> >>>> It is not needed at all bit it appears in your stack. If it is a copy
> >>> paste
> >>>> just drop it ;)
> >>>>
> >>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> >>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>
> >>>>> hi, i checked http://incubator.apache.org/projects/sirona.html but i
> >>>>> couldn't find any documentation.  is sirona a requirement for
> >>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests?
> >>>>> if so,
> >>>>> then how do i exclude the mysql lib from the configuration?
> >>>>> <!-- we monitor the test with sirona -->
> >>>>> <property name="javaagent">
> >>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >>>>> </property>
> >>>>>
> >>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
> >>>>>>
> >>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>
> >>>>>>> thanks i added it using
> >>>>>>> <property
> >>>>>>>
> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>>>>
> >>>>>>>
> >>>>>>> but i get these errors (which don't seem to stop execution)
> >>>>>>>
> >>>>>>> fail to transform
> >>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>>>>> JSR/RET are not supported with computeFrames
> >>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
> >>>>>>> computeFrames option
> >>>>>>>         at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>>>>         at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >>>>> Source)
> >>>>>>> SEVERE - Can't create DataSource
> >>>>>>> java.lang.LinkageError: loader (instance of
> >>>>>>> java/net/URLClassLoader):
> >>>>>>> attempted  duplicate class definition for name:
> >>>>>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>>>>
> >>>>>>> but this one is a stopper
> >>>>>>>
> >>>>>>> SEVERE - CDI Beans module deployment failed
> >>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the
> >>>>>>> qualifiers
> >>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>>>>> for injection into Field Injection Point, field name :
> >>>>>>> quoteTypeDao,
> >>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>>>>> Name:null, API
> >>>>>>> Types:[java.lang.Object,uk.me
> >>>>> .kissy.sales.test.QuoteGeneratorArquillian],
> >>>>>
> >>>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>
> >>>>>>> i tried enabling remote support as i am trying remote not embedded
> >>>>>>> tomee.remote.support = true
> >>>>>>> # tomee.serialization.class.blacklist = *
> >>>>>>> tomee.serialization.class.whitelist = *
> >>>>>>>
> >>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>>>>> You can add it in libs property of arquillian container config.
> >>>>>>>> Just
> >>>>>>> prefix
> >>>>>>>> the coords with mvn:.
> >>>>>>>>
> >>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>>>>
> >>>>>>>> It is a multiline property so you can add N libs to tomee lib this
> >>> way
> >>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>
> >>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
> >>> please
> >>>>>>>>> wait...
> >>>>>>>>>
> >>>>>>>>> i have an arquillian test running up ok but it is complaining
> >>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send the
> >>>>>>>>> following stack trace and this message to
> >>>>>>>>> users@tomee.apache.org :
> >>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
> >>> Unable to
> >>>>>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>>>>
> >>>>>>>>> is there any way to directly bring in the mysql driver from maven
> >>>>>>>>> central?  or do i need to download manually and put it into
> >>>>>>>>> src/test/tomee/lib?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>>>>> You can theorically but I'd recommand you to write it in the
> >>>>>>>>>> final
> >>>>>>> module
> >>>>>>>>>> instead of trying to use the parent which will be executed
> >>>>>>>>>> before
> >>> any
> >>>>>>>>> other
> >>>>>>>>>> modules.
> >>>>>>>>>>
> >>>>>>>>>> If A depends on B which depends on C then write your tests in
> >>>>>>>>>> A for
> >>>>> the
> >>>>>>>>>> complete app tests and write unit tests in B and C (potentially
> >>> using
> >>>>>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>>>>
> >>>>>>>>>> For reference:
> >>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> >>> and
> >>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>>>>
> >>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>> <
> >>>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>
> >>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>
> >>>>>>>>>>> it sounds like Arquillian might be the best fit in my case. can
> >>> the
> >>>>>>>>>>> tests inject CDI beans from the webapps or does everything
> >>>>>>>>>>> need to
> >>>>> be
> >>>>>>>>>>> done through http? looking at
> >>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple
> Arquilian
> >>>>> Test"
> >>>>>>>>> it
> >>>>>>>>>>> looks as if beans can be injected...
> >>>>>>>>>>>
> >>>>>>>>>>> is it possible to create the tests (or at least TomEE instance)
> >>> in a
> >>>>>>>>>>> parent pom?  i need to run several webapps at once which are
> >>>>>>>>>>> all
> >>>>>>> modules
> >>>>>>>>>>> of the parent.  i think code is discouraged in parent project.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>>>>> You can set the property openejb.location (or the other
> >>>>>>>>>>>> ones we
> >>>>> have)
> >>>>>>>>> to
> >>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
> >>>>> properties
> >>>>>>> is
> >>>>>>>>>>>> that it is filtered during the test and doesnt require a maven
> >>>>> build
> >>>>>>>>> but
> >>>>>>>>>>> it
> >>>>>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Arquillian is great to test complete application*s* in a real
> >>>>> server,
> >>>>>>>>>>>> ApplicationComposer is good to test small parts of
> >>>>>>>>>>>> applications
> >>> or
> >>>>>>>>>>>> frameworks, TomEE,
> >>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
> >>>>>>>>> deployment
> >>>>>>>>>>>> from the classpath + single test setup) and will save a lot of
> >>>>> time.
> >>>>>>>>>>>> Romain Manni-Bucau
> >>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> >>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>>>>> <
> >>>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>
> >>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>>>>
> >>>>>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
> >>> CDI
> >>>>> is
> >>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain
> >>>>>>>>>>>>> about
> >>>>> how
> >>>>>>>>> to
> >>>>>>>>>>>>> load a test database.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> i was going to start by just loading the database as
> >>>>>>>>>>>>> normal as
> >>> it
> >>>>>>> is a
> >>>>>>>>>>>>> copy of production database.  but how do i specify the
> >>>>>>>>>>>>> username
> >>>>> and
> >>>>>>>>>>>>> password or any other properties that are needed to
> >>>>>>>>>>>>> connect to
> >>> the
> >>>>>>> db?
> >>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
> >>> "mydb",
> >>>>>>>>> value
> >>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> another question...is it better to start with Arquillian or
> >>>>>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>>>>
> >>>
> >
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
ah ok.  i found
.addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"), 
"persistence.xml")

in
http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/arquillian-jpa/src/test/java/org/superbiz/arquillian/test/persistence/PersistenceTest.java

but now i am back to
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException: 
javax.enterprise.inject.UnsatisfiedResolutionException: Api type 
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : quoteTypeDao, 
Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE, 
Name:null, API 
Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
     at 
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)

so i must have missed a required class somewhere

On 23/06/18 18:53, Matthew Broadhead wrote:
> do i need to copy the persistence.xml to src/test/resources/META-INF? 
> or can i specify its location somewhere in config?
>
> SEVERE - FAIL ... sales:    Missing required persistence.xml for 
> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> SEVERE - Invalid EjbModule(name=sales, 
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> SEVERE - FAIL ... sales:    Missing required persistence.xml for 
> @PersistenceUnit ref "entityManagerFactory" to unit "sales"
> SEVERE - Invalid WebModule(name=sales, 
> path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
> INFO - Set the 'openejb.validation.output.level' system property to 
> VERBOSE for increased validation details.
> SEVERE - Unable to deploy collapsed ear in war 
> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
> org.apache.openejb.config.ValidationFailedException: Module failed 
> validation. AppModule(name=sales)
>     at 
> org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
>     at 
> org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)
>
> On 23/06/18 13:30, Romain Manni-Bucau wrote:
>> You can but you need to add all the object graph in the archive. Here 
>> you
>> miss an injection it seems (in your dao?).
>>
>> Side note: operatesondeployment and naming your archive is not needed 
>> here.
>> It is useful when you deploy N > 1 archives.
>>
>> Le sam. 23 juin 2018 12:54, Matthew Broadhead
>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>
>>> i got the sample configuration from
>>> http://tomee.apache.org/developer/testing/arquillian/index.html under
>>> remote section.
>>>
>>> now my problem is that i can't inject the CDI bean
>>> SEVERE - CDI Beans module deployment failed
>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>> Name:null, API
>>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>       at
>>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>>       at
>>>
>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196) 
>>>
>>>
>>> i created the @Deployment using
>>> @Inject
>>>       private QuoteTypeDao quoteTypeDao;
>>>
>>>       @Deployment(name = "archive")
>>>       public static WebArchive war() {
>>>           return ShrinkWrap.create(WebArchive.class,
>>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>>                   .addClasses(QuoteTypeDao.class);
>>>       }
>>>
>>>       @Test
>>>       @OperateOnDeployment("archive")
>>>       public void test1() {
>>>           Quote quote = new Quote();
>>>           Promotion promotion = null;
>>>           List<QuoteType> quoteTypeList =
>>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>>           System.out.println("Quote type list size: " +
>>> quoteTypeList.size());
>>>           for (QuoteType quoteType : quoteTypeList) {
>>>               System.out.println(quoteType.getName());
>>>               // quoteGeneratorDao.generateQuote(quote, promotion,
>>>               // quoteType.getQuoteTypeCategories(), quoteQuestions,
>>>               // quoteInit, true);
>>>               assertEquals(0, 1);
>>>           }
>>>           assertEquals(0, 1);
>>>       }
>>>
>>> can i not inject a CDI bean into the test using 
>>> arquillian-tomee-remote?
>>>
>>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>>> It is not needed at all bit it appears in your stack. If it is a copy
>>> paste
>>>> just drop it ;)
>>>>
>>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>
>>>>> hi, i checked http://incubator.apache.org/projects/sirona.html but i
>>>>> couldn't find any documentation.  is sirona a requirement for
>>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? 
>>>>> if so,
>>>>> then how do i exclude the mysql lib from the configuration?
>>>>> <!-- we monitor the test with sirona -->
>>>>> <property name="javaagent">
>>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>>> </property>
>>>>>
>>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
>>>>>>
>>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>
>>>>>>> thanks i added it using
>>>>>>> <property
>>>>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property> 
>>>>>>>
>>>>>>>
>>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>>
>>>>>>> fail to transform
>>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>>> JSR/RET are not supported with computeFrames
>>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>>>>>>> computeFrames option
>>>>>>>         at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>>         at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>>> Source)
>>>>>>> SEVERE - Can't create DataSource
>>>>>>> java.lang.LinkageError: loader (instance of 
>>>>>>> java/net/URLClassLoader):
>>>>>>> attempted  duplicate class definition for name:
>>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>>
>>>>>>> but this one is a stopper
>>>>>>>
>>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the 
>>>>>>> qualifiers
>>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>>> for injection into Field Injection Point, field name : 
>>>>>>> quoteTypeDao,
>>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>>> Name:null, API
>>>>>>> Types:[java.lang.Object,uk.me
>>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>>
>>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]] 
>>>
>>>>>>> i tried enabling remote support as i am trying remote not embedded
>>>>>>> tomee.remote.support = true
>>>>>>> # tomee.serialization.class.blacklist = *
>>>>>>> tomee.serialization.class.whitelist = *
>>>>>>>
>>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>>> You can add it in libs property of arquillian container config. 
>>>>>>>> Just
>>>>>>> prefix
>>>>>>>> the coords with mvn:.
>>>>>>>>
>>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>>
>>>>>>>> It is a multiline property so you can add N libs to tomee lib this
>>> way
>>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>
>>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
>>> please
>>>>>>>>> wait...
>>>>>>>>>
>>>>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler. Please send the
>>>>>>>>> following stack trace and this message to 
>>>>>>>>> users@tomee.apache.org :
>>>>>>>>> org.apache.xbean.propertyeditor.PropertyEditorException:
>>> Unable to
>>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>>
>>>>>>>>> is there any way to directly bring in the mysql driver from maven
>>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>>> src/test/tomee/lib?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>>> You can theorically but I'd recommand you to write it in the 
>>>>>>>>>> final
>>>>>>> module
>>>>>>>>>> instead of trying to use the parent which will be executed 
>>>>>>>>>> before
>>> any
>>>>>>>>> other
>>>>>>>>>> modules.
>>>>>>>>>>
>>>>>>>>>> If A depends on B which depends on C then write your tests in 
>>>>>>>>>> A for
>>>>> the
>>>>>>>>>> complete app tests and write unit tests in B and C (potentially
>>> using
>>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>>
>>>>>>>>>> For reference:
>>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>>> and
>>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>>
>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>
>>>>>>>>>>> it sounds like Arquillian might be the best fit in my case. can
>>> the
>>>>>>>>>>> tests inject CDI beans from the webapps or does everything 
>>>>>>>>>>> need to
>>>>> be
>>>>>>>>>>> done through http? looking at
>>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
>>>>> Test"
>>>>>>>>> it
>>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>>
>>>>>>>>>>> is it possible to create the tests (or at least TomEE instance)
>>> in a
>>>>>>>>>>> parent pom?  i need to run several webapps at once which are 
>>>>>>>>>>> all
>>>>>>> modules
>>>>>>>>>>> of the parent.  i think code is discouraged in parent project.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>>> You can set the property openejb.location (or the other 
>>>>>>>>>>>> ones we
>>>>> have)
>>>>>>>>> to
>>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>>>>> properties
>>>>>>> is
>>>>>>>>>>>> that it is filtered during the test and doesnt require a maven
>>>>> build
>>>>>>>>> but
>>>>>>>>>>> it
>>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>>
>>>>>>>>>>>> Arquillian is great to test complete application*s* in a real
>>>>> server,
>>>>>>>>>>>> ApplicationComposer is good to test small parts of 
>>>>>>>>>>>> applications
>>> or
>>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>>>>>>>>> deployment
>>>>>>>>>>>> from the classpath + single test setup) and will save a lot of
>>>>> time.
>>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog
>>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>>> <
>>> https://www.packtpub.com/application-development/java-ee-8-high-performance 
>>>
>>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
>>> CDI
>>>>> is
>>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain 
>>>>>>>>>>>>> about
>>>>> how
>>>>>>>>> to
>>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>>
>>>>>>>>>>>>> i was going to start by just loading the database as 
>>>>>>>>>>>>> normal as
>>> it
>>>>>>> is a
>>>>>>>>>>>>> copy of production database.  but how do i specify the 
>>>>>>>>>>>>> username
>>>>> and
>>>>>>>>>>>>> password or any other properties that are needed to 
>>>>>>>>>>>>> connect to
>>> the
>>>>>>> db?
>>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
>>> "mydb",
>>>>>>>>> value
>>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>>
>>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>>
>>>>>>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>>
>>>
>


Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
do i need to copy the persistence.xml to src/test/resources/META-INF?  
or can i specify its location somewhere in config?

SEVERE - FAIL ... sales:    Missing required persistence.xml for 
@PersistenceUnit ref "entityManagerFactory" to unit "sales"
SEVERE - Invalid EjbModule(name=sales, 
path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
SEVERE - FAIL ... sales:    Missing required persistence.xml for 
@PersistenceUnit ref "entityManagerFactory" to unit "sales"
SEVERE - Invalid WebModule(name=sales, 
path=/home/matthew/git/case-management/sales/target/working-dir/0/sales)
INFO - Set the 'openejb.validation.output.level' system property to 
VERBOSE for increased validation details.
SEVERE - Unable to deploy collapsed ear in war 
StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sales]
org.apache.openejb.config.ValidationFailedException: Module failed 
validation. AppModule(name=sales)
     at 
org.apache.openejb.config.ReportValidationResults.deploy(ReportValidationResults.java:88)
     at 
org.apache.openejb.config.AppInfoBuilder.build(AppInfoBuilder.java:322)

On 23/06/18 13:30, Romain Manni-Bucau wrote:
> You can but you need to add all the object graph in the archive. Here you
> miss an injection it seems (in your dao?).
>
> Side note: operatesondeployment and naming your archive is not needed here.
> It is useful when you deploy N > 1 archives.
>
> Le sam. 23 juin 2018 12:54, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> i got the sample configuration from
>> http://tomee.apache.org/developer/testing/arquillian/index.html under
>> remote section.
>>
>> now my problem is that i can't inject the CDI bean
>> SEVERE - CDI Beans module deployment failed
>> org.apache.webbeans.exception.WebBeansDeploymentException:
>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>> Qualifiers: [@javax.enterprise.inject.Default()]
>> for injection into Field Injection Point, field name : quoteTypeDao,
>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>> Name:null, API
>> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>       at
>> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>>       at
>>
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>>
>> i created the @Deployment using
>> @Inject
>>       private QuoteTypeDao quoteTypeDao;
>>
>>       @Deployment(name = "archive")
>>       public static WebArchive war() {
>>           return ShrinkWrap.create(WebArchive.class,
>> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>>                   .addClasses(QuoteTypeDao.class);
>>       }
>>
>>       @Test
>>       @OperateOnDeployment("archive")
>>       public void test1() {
>>           Quote quote = new Quote();
>>           Promotion promotion = null;
>>           List<QuoteType> quoteTypeList =
>> quoteTypeDao.selectQuoteTypes(promotion, true);
>>           System.out.println("Quote type list size: " +
>> quoteTypeList.size());
>>           for (QuoteType quoteType : quoteTypeList) {
>>               System.out.println(quoteType.getName());
>>               // quoteGeneratorDao.generateQuote(quote, promotion,
>>               // quoteType.getQuoteTypeCategories(), quoteQuestions,
>>               // quoteInit, true);
>>               assertEquals(0, 1);
>>           }
>>           assertEquals(0, 1);
>>       }
>>
>> can i not inject a CDI bean into the test using arquillian-tomee-remote?
>>
>> On 23/06/18 10:17, Romain Manni-Bucau wrote:
>>> It is not needed at all bit it appears in your stack. If it is a copy
>> paste
>>> just drop it ;)
>>>
>>> Le sam. 23 juin 2018 10:05, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> hi, i checked http://incubator.apache.org/projects/sirona.html but i
>>>> couldn't find any documentation.  is sirona a requirement for
>>>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so,
>>>> then how do i exclude the mysql lib from the configuration?
>>>> <!-- we monitor the test with sirona -->
>>>> <property name="javaagent">
>>>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>>>> </property>
>>>>
>>>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>>>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
>>>>>
>>>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> thanks i added it using
>>>>>> <property
>>>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>>>
>>>>>> but i get these errors (which don't seem to stop execution)
>>>>>>
>>>>>> fail to transform
>> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>>>> JSR/RET are not supported with computeFrames
>>>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>>>>>> computeFrames option
>>>>>>         at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>>>         at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>>>> Source)
>>>>>> SEVERE - Can't create DataSource
>>>>>> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
>>>>>> attempted  duplicate class definition for name:
>>>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>>>
>>>>>> but this one is a stopper
>>>>>>
>>>>>> SEVERE - CDI Beans module deployment failed
>>>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>>>> Name:null, API
>>>>>> Types:[java.lang.Object,uk.me
>>>> .kissy.sales.test.QuoteGeneratorArquillian],
>>>>
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>>>> i tried enabling remote support as i am trying remote not embedded
>>>>>> tomee.remote.support = true
>>>>>> # tomee.serialization.class.blacklist = *
>>>>>> tomee.serialization.class.whitelist = *
>>>>>>
>>>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>>>> You can add it in libs property of arquillian container config. Just
>>>>>> prefix
>>>>>>> the coords with mvn:.
>>>>>>>
>>>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>>>
>>>>>>> It is a multiline property so you can add N libs to tomee lib this
>> way
>>>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>
>>>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
>> please
>>>>>>>> wait...
>>>>>>>>
>>>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
>>>>>>>> following stack trace and this message to users@tomee.apache.org :
>>>>>>>>       org.apache.xbean.propertyeditor.PropertyEditorException:
>> Unable to
>>>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>>>
>>>>>>>> is there any way to directly bring in the mysql driver from maven
>>>>>>>> central?  or do i need to download manually and put it into
>>>>>>>> src/test/tomee/lib?
>>>>>>>>
>>>>>>>>
>>>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>>>> You can theorically but I'd recommand you to write it in the final
>>>>>> module
>>>>>>>>> instead of trying to use the parent which will be executed before
>> any
>>>>>>>> other
>>>>>>>>> modules.
>>>>>>>>>
>>>>>>>>> If A depends on B which depends on C then write your tests in A for
>>>> the
>>>>>>>>> complete app tests and write unit tests in B and C (potentially
>> using
>>>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>>>
>>>>>>>>> For reference:
>>>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
>> and
>>>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>>>
>>>>>>>>> Romain Manni-Bucau
>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>
>>>>>>>>>> it sounds like Arquillian might be the best fit in my case.  can
>> the
>>>>>>>>>> tests inject CDI beans from the webapps or does everything need to
>>>> be
>>>>>>>>>> done through http?  looking at
>>>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
>>>> Test"
>>>>>>>> it
>>>>>>>>>> looks as if beans can be injected...
>>>>>>>>>>
>>>>>>>>>> is it possible to create the tests (or at least TomEE instance)
>> in a
>>>>>>>>>> parent pom?  i need to run several webapps at once which are all
>>>>>> modules
>>>>>>>>>> of the parent.  i think code is discouraged in parent project.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>>>> You can set the property openejb.location (or the other ones we
>>>> have)
>>>>>>>> to
>>>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>>>> properties
>>>>>> is
>>>>>>>>>>> that it is filtered during the test and doesnt require a maven
>>>> build
>>>>>>>> but
>>>>>>>>>> it
>>>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>>>
>>>>>>>>>>> Arquillian is great to test complete application*s* in a real
>>>> server,
>>>>>>>>>>> ApplicationComposer is good to test small parts of applications
>> or
>>>>>>>>>>> frameworks, TomEE,
>>>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>>>>>>>> deployment
>>>>>>>>>>> from the classpath + single test setup) and will save a lot of
>>>> time.
>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>>>
>>>>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
>> CDI
>>>> is
>>>>>>>>>>>> scanning the classes correctly but i am a little uncertain about
>>>> how
>>>>>>>> to
>>>>>>>>>>>> load a test database.
>>>>>>>>>>>>
>>>>>>>>>>>> i was going to start by just loading the database as normal as
>> it
>>>>>> is a
>>>>>>>>>>>> copy of production database.  but how do i specify the username
>>>> and
>>>>>>>>>>>> password or any other properties that are needed to connect to
>> the
>>>>>> db?
>>>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
>> "mydb",
>>>>>>>> value
>>>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>>>
>>>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>>>
>>>>>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
You can but you need to add all the object graph in the archive. Here you
miss an injection it seems (in your dao?).

Side note: operatesondeployment and naming your archive is not needed here.
It is useful when you deploy N > 1 archives.

Le sam. 23 juin 2018 12:54, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> i got the sample configuration from
> http://tomee.apache.org/developer/testing/arquillian/index.html under
> remote section.
>
> now my problem is that i can't inject the CDI bean
> SEVERE - CDI Beans module deployment failed
> org.apache.webbeans.exception.WebBeansDeploymentException:
> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> Qualifiers: [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name : quoteTypeDao,
> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> Name:null, API
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>      at
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>      at
>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>
> i created the @Deployment using
> @Inject
>      private QuoteTypeDao quoteTypeDao;
>
>      @Deployment(name = "archive")
>      public static WebArchive war() {
>          return ShrinkWrap.create(WebArchive.class,
> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>                  .addClasses(QuoteTypeDao.class);
>      }
>
>      @Test
>      @OperateOnDeployment("archive")
>      public void test1() {
>          Quote quote = new Quote();
>          Promotion promotion = null;
>          List<QuoteType> quoteTypeList =
> quoteTypeDao.selectQuoteTypes(promotion, true);
>          System.out.println("Quote type list size: " +
> quoteTypeList.size());
>          for (QuoteType quoteType : quoteTypeList) {
>              System.out.println(quoteType.getName());
>              // quoteGeneratorDao.generateQuote(quote, promotion,
>              // quoteType.getQuoteTypeCategories(), quoteQuestions,
>              // quoteInit, true);
>              assertEquals(0, 1);
>          }
>          assertEquals(0, 1);
>      }
>
> can i not inject a CDI bean into the test using arquillian-tomee-remote?
>
> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> > It is not needed at all bit it appears in your stack. If it is a copy
> paste
> > just drop it ;)
> >
> > Le sam. 23 juin 2018 10:05, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> hi, i checked http://incubator.apache.org/projects/sirona.html but i
> >> couldn't find any documentation.  is sirona a requirement for
> >> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so,
> >> then how do i exclude the mysql lib from the configuration?
> >> <!-- we monitor the test with sirona -->
> >> <property name="javaagent">
> >> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >> </property>
> >>
> >> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
> >>>
> >>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> thanks i added it using
> >>>> <property
> >>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>
> >>>> but i get these errors (which don't seem to stop execution)
> >>>>
> >>>> fail to transform
> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>> JSR/RET are not supported with computeFrames
> >>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
> >>>> computeFrames option
> >>>>        at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>        at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >> Source)
> >>>> SEVERE - Can't create DataSource
> >>>> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
> >>>> attempted  duplicate class definition for name:
> >>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>
> >>>> but this one is a stopper
> >>>>
> >>>> SEVERE - CDI Beans module deployment failed
> >>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>> Name:null, API
> >>>> Types:[java.lang.Object,uk.me
> >> .kissy.sales.test.QuoteGeneratorArquillian],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>> i tried enabling remote support as i am trying remote not embedded
> >>>> tomee.remote.support = true
> >>>> # tomee.serialization.class.blacklist = *
> >>>> tomee.serialization.class.whitelist = *
> >>>>
> >>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>> You can add it in libs property of arquillian container config. Just
> >>>> prefix
> >>>>> the coords with mvn:.
> >>>>>
> >>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>
> >>>>> It is a multiline property so you can add N libs to tomee lib this
> way
> >>>>>
> >>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>
> >>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
> please
> >>>>>> wait...
> >>>>>>
> >>>>>> i have an arquillian test running up ok but it is complaining
> >>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
> >>>>>> following stack trace and this message to users@tomee.apache.org :
> >>>>>>      org.apache.xbean.propertyeditor.PropertyEditorException:
> Unable to
> >>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>
> >>>>>> is there any way to directly bring in the mysql driver from maven
> >>>>>> central?  or do i need to download manually and put it into
> >>>>>> src/test/tomee/lib?
> >>>>>>
> >>>>>>
> >>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>> You can theorically but I'd recommand you to write it in the final
> >>>> module
> >>>>>>> instead of trying to use the parent which will be executed before
> any
> >>>>>> other
> >>>>>>> modules.
> >>>>>>>
> >>>>>>> If A depends on B which depends on C then write your tests in A for
> >> the
> >>>>>>> complete app tests and write unit tests in B and C (potentially
> using
> >>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>
> >>>>>>> For reference:
> >>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> and
> >>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>
> >>>>>>> Romain Manni-Bucau
> >>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>> https://github.com/rmannibucau> |
> >>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>
> >>>>>>>> it sounds like Arquillian might be the best fit in my case.  can
> the
> >>>>>>>> tests inject CDI beans from the webapps or does everything need to
> >> be
> >>>>>>>> done through http?  looking at
> >>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
> >> Test"
> >>>>>> it
> >>>>>>>> looks as if beans can be injected...
> >>>>>>>>
> >>>>>>>> is it possible to create the tests (or at least TomEE instance)
> in a
> >>>>>>>> parent pom?  i need to run several webapps at once which are all
> >>>> modules
> >>>>>>>> of the parent.  i think code is discouraged in parent project.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>> You can set the property openejb.location (or the other ones we
> >> have)
> >>>>>> to
> >>>>>>>>> point to an openejb.xml if you want. The advantage of the
> >> properties
> >>>> is
> >>>>>>>>> that it is filtered during the test and doesnt require a maven
> >> build
> >>>>>> but
> >>>>>>>> it
> >>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>
> >>>>>>>>> Arquillian is great to test complete application*s* in a real
> >> server,
> >>>>>>>>> ApplicationComposer is good to test small parts of applications
> or
> >>>>>>>>> frameworks, TomEE,
> >>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
> >>>>>> deployment
> >>>>>>>>> from the classpath + single test setup) and will save a lot of
> >> time.
> >>>>>>>>> Romain Manni-Bucau
> >>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>>>
> >>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
> CDI
> >> is
> >>>>>>>>>> scanning the classes correctly but i am a little uncertain about
> >> how
> >>>>>> to
> >>>>>>>>>> load a test database.
> >>>>>>>>>>
> >>>>>>>>>> i was going to start by just loading the database as normal as
> it
> >>>> is a
> >>>>>>>>>> copy of production database.  but how do i specify the username
> >> and
> >>>>>>>>>> password or any other properties that are needed to connect to
> the
> >>>> db?
> >>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
> "mydb",
> >>>>>> value
> >>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>
> >>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>
> >>>>>>>>>> another question...is it better to start with Arquillian or
> >>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
i got the sample configuration from 
http://tomee.apache.org/developer/testing/arquillian/index.html under 
remote section.

now my problem is that i can't inject the CDI bean
SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException: 
javax.enterprise.inject.UnsatisfiedResolutionException: Api type 
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : quoteTypeDao, 
Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE, 
Name:null, API 
Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
     at 
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
     at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)

i created the @Deployment using
@Inject
     private QuoteTypeDao quoteTypeDao;

     @Deployment(name = "archive")
     public static WebArchive war() {
         return ShrinkWrap.create(WebArchive.class, 
"test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
                 .addClasses(QuoteTypeDao.class);
     }

     @Test
     @OperateOnDeployment("archive")
     public void test1() {
         Quote quote = new Quote();
         Promotion promotion = null;
         List<QuoteType> quoteTypeList = 
quoteTypeDao.selectQuoteTypes(promotion, true);
         System.out.println("Quote type list size: " + 
quoteTypeList.size());
         for (QuoteType quoteType : quoteTypeList) {
             System.out.println(quoteType.getName());
             // quoteGeneratorDao.generateQuote(quote, promotion,
             // quoteType.getQuoteTypeCategories(), quoteQuestions,
             // quoteInit, true);
             assertEquals(0, 1);
         }
         assertEquals(0, 1);
     }

can i not inject a CDI bean into the test using arquillian-tomee-remote?

On 23/06/18 10:17, Romain Manni-Bucau wrote:
> It is not needed at all bit it appears in your stack. If it is a copy paste
> just drop it ;)
>
> Le sam. 23 juin 2018 10:05, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> hi, i checked http://incubator.apache.org/projects/sirona.html but i
>> couldn't find any documentation.  is sirona a requirement for
>> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so,
>> then how do i exclude the mysql lib from the configuration?
>> <!-- we monitor the test with sirona -->
>> <property name="javaagent">
>> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
>> </property>
>>
>> On 23/06/18 08:15, Romain Manni-Bucau wrote:
>>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
>>>
>>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> thanks i added it using
>>>> <property
>>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>>>
>>>> but i get these errors (which don't seem to stop execution)
>>>>
>>>> fail to transform class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>>>> JSR/RET are not supported with computeFrames
>>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>>>> computeFrames option
>>>>        at org.apache.sirona.asm.Frame.a(Unknown Source)
>>>>        at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
>> Source)
>>>> SEVERE - Can't create DataSource
>>>> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
>>>> attempted  duplicate class definition for name:
>>>> "com/mysql/jdbc/ConnectionImpl"
>>>>
>>>> but this one is a stopper
>>>>
>>>> SEVERE - CDI Beans module deployment failed
>>>> org.apache.webbeans.exception.WebBeansDeploymentException:
>>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>>>> Qualifiers: [@javax.enterprise.inject.Default()]
>>>> for injection into Field Injection Point, field name : quoteTypeDao,
>>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>>>> Name:null, API
>>>> Types:[java.lang.Object,uk.me
>> .kissy.sales.test.QuoteGeneratorArquillian],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>>> i tried enabling remote support as i am trying remote not embedded
>>>> tomee.remote.support = true
>>>> # tomee.serialization.class.blacklist = *
>>>> tomee.serialization.class.whitelist = *
>>>>
>>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>>>> You can add it in libs property of arquillian container config. Just
>>>> prefix
>>>>> the coords with mvn:.
>>>>>
>>>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>>>
>>>>> It is a multiline property so you can add N libs to tomee lib this way
>>>>>
>>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
>>>>>> wait...
>>>>>>
>>>>>> i have an arquillian test running up ok but it is complaining
>>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
>>>>>> following stack trace and this message to users@tomee.apache.org :
>>>>>>      org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>>>> resolve class com.mysql.jdbc.Driver
>>>>>>
>>>>>> is there any way to directly bring in the mysql driver from maven
>>>>>> central?  or do i need to download manually and put it into
>>>>>> src/test/tomee/lib?
>>>>>>
>>>>>>
>>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>>>> You can theorically but I'd recommand you to write it in the final
>>>> module
>>>>>>> instead of trying to use the parent which will be executed before any
>>>>>> other
>>>>>>> modules.
>>>>>>>
>>>>>>> If A depends on B which depends on C then write your tests in A for
>> the
>>>>>>> complete app tests and write unit tests in B and C (potentially using
>>>>>>> arquillian, appcomposer or even other solutions).
>>>>>>>
>>>>>>> For reference:
>>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html and
>>>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>>>
>>>>>>> Romain Manni-Bucau
>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>> https://github.com/rmannibucau> |
>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>
>>>>>>>> it sounds like Arquillian might be the best fit in my case.  can the
>>>>>>>> tests inject CDI beans from the webapps or does everything need to
>> be
>>>>>>>> done through http?  looking at
>>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
>> Test"
>>>>>> it
>>>>>>>> looks as if beans can be injected...
>>>>>>>>
>>>>>>>> is it possible to create the tests (or at least TomEE instance) in a
>>>>>>>> parent pom?  i need to run several webapps at once which are all
>>>> modules
>>>>>>>> of the parent.  i think code is discouraged in parent project.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>>>> You can set the property openejb.location (or the other ones we
>> have)
>>>>>> to
>>>>>>>>> point to an openejb.xml if you want. The advantage of the
>> properties
>>>> is
>>>>>>>>> that it is filtered during the test and doesnt require a maven
>> build
>>>>>> but
>>>>>>>> it
>>>>>>>>> is up to you and depends the project setup.
>>>>>>>>>
>>>>>>>>> Arquillian is great to test complete application*s* in a real
>> server,
>>>>>>>>> ApplicationComposer is good to test small parts of applications or
>>>>>>>>> frameworks, TomEE,
>>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>>>>>> deployment
>>>>>>>>> from the classpath + single test setup) and will save a lot of
>> time.
>>>>>>>>> Romain Manni-Bucau
>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>>>> https://github.com/rmannibucau> |
>>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>>>
>>>>>>>>>> i am trying to use ApplicationComposer to create some tests.  CDI
>> is
>>>>>>>>>> scanning the classes correctly but i am a little uncertain about
>> how
>>>>>> to
>>>>>>>>>> load a test database.
>>>>>>>>>>
>>>>>>>>>> i was going to start by just loading the database as normal as it
>>>> is a
>>>>>>>>>> copy of production database.  but how do i specify the username
>> and
>>>>>>>>>> password or any other properties that are needed to connect to the
>>>> db?
>>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
>>>>>> value
>>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>>>
>>>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>>>
>>>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>>>> ApplicationComposer?
>>>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
It is not needed at all bit it appears in your stack. If it is a copy paste
just drop it ;)

Le sam. 23 juin 2018 10:05, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> hi, i checked http://incubator.apache.org/projects/sirona.html but i
> couldn't find any documentation.  is sirona a requirement for
> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so,
> then how do i exclude the mysql lib from the configuration?
> <!-- we monitor the test with sirona -->
> <property name="javaagent">
> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> </property>
>
> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> > Exclude mysql from sirona instrumentation. Its bytecode is not safe.
> >
> > Le sam. 23 juin 2018 01:03, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> thanks i added it using
> >> <property
> >> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>
> >> but i get these errors (which don't seem to stop execution)
> >>
> >> fail to transform class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >> JSR/RET are not supported with computeFrames
> >> optionjava.lang.RuntimeException: JSR/RET are not supported with
> >> computeFrames option
> >>       at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>       at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> Source)
> >>
> >> SEVERE - Can't create DataSource
> >> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
> >> attempted  duplicate class definition for name:
> >> "com/mysql/jdbc/ConnectionImpl"
> >>
> >> but this one is a stopper
> >>
> >> SEVERE - CDI Beans module deployment failed
> >> org.apache.webbeans.exception.WebBeansDeploymentException:
> >> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >> Qualifiers: [@javax.enterprise.inject.Default()]
> >> for injection into Field Injection Point, field name : quoteTypeDao,
> >> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >> Name:null, API
> >> Types:[java.lang.Object,uk.me
> .kissy.sales.test.QuoteGeneratorArquillian],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>
> >> i tried enabling remote support as i am trying remote not embedded
> >> tomee.remote.support = true
> >> # tomee.serialization.class.blacklist = *
> >> tomee.serialization.class.whitelist = *
> >>
> >> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>> You can add it in libs property of arquillian container config. Just
> >> prefix
> >>> the coords with mvn:.
> >>>
> >>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>
> >>> It is a multiline property so you can add N libs to tomee lib this way
> >>>
> >>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
> >>>> wait...
> >>>>
> >>>> i have an arquillian test running up ok but it is complaining
> >>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
> >>>> following stack trace and this message to users@tomee.apache.org :
> >>>>     org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> >>>> resolve class com.mysql.jdbc.Driver
> >>>>
> >>>> is there any way to directly bring in the mysql driver from maven
> >>>> central?  or do i need to download manually and put it into
> >>>> src/test/tomee/lib?
> >>>>
> >>>>
> >>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>> You can theorically but I'd recommand you to write it in the final
> >> module
> >>>>> instead of trying to use the parent which will be executed before any
> >>>> other
> >>>>> modules.
> >>>>>
> >>>>> If A depends on B which depends on C then write your tests in A for
> the
> >>>>> complete app tests and write unit tests in B and C (potentially using
> >>>>> arquillian, appcomposer or even other solutions).
> >>>>>
> >>>>> For reference:
> >>>>> http://tomee.apache.org/developer/testing/arquillian/index.html and
> >>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>
> >>>>> Romain Manni-Bucau
> >>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>> https://github.com/rmannibucau> |
> >>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>
> >>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>
> >>>>>> it sounds like Arquillian might be the best fit in my case.  can the
> >>>>>> tests inject CDI beans from the webapps or does everything need to
> be
> >>>>>> done through http?  looking at
> >>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
> Test"
> >>>> it
> >>>>>> looks as if beans can be injected...
> >>>>>>
> >>>>>> is it possible to create the tests (or at least TomEE instance) in a
> >>>>>> parent pom?  i need to run several webapps at once which are all
> >> modules
> >>>>>> of the parent.  i think code is discouraged in parent project.
> >>>>>>
> >>>>>>
> >>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>> You can set the property openejb.location (or the other ones we
> have)
> >>>> to
> >>>>>>> point to an openejb.xml if you want. The advantage of the
> properties
> >> is
> >>>>>>> that it is filtered during the test and doesnt require a maven
> build
> >>>> but
> >>>>>> it
> >>>>>>> is up to you and depends the project setup.
> >>>>>>>
> >>>>>>> Arquillian is great to test complete application*s* in a real
> server,
> >>>>>>> ApplicationComposer is good to test small parts of applications or
> >>>>>>> frameworks, TomEE,
> >>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
> >>>> deployment
> >>>>>>> from the classpath + single test setup) and will save a lot of
> time.
> >>>>>>>
> >>>>>>> Romain Manni-Bucau
> >>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>> https://github.com/rmannibucau> |
> >>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>>>
> >>>>>>>> i am trying to use ApplicationComposer to create some tests.  CDI
> is
> >>>>>>>> scanning the classes correctly but i am a little uncertain about
> how
> >>>> to
> >>>>>>>> load a test database.
> >>>>>>>>
> >>>>>>>> i was going to start by just loading the database as normal as it
> >> is a
> >>>>>>>> copy of production database.  but how do i specify the username
> and
> >>>>>>>> password or any other properties that are needed to connect to the
> >> db?
> >>>>>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
> >>>> value
> >>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>
> >>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>
> >>>>>>>> another question...is it better to start with Arquillian or
> >>>>>>>> ApplicationComposer?
> >>>>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
hi, i checked http://incubator.apache.org/projects/sirona.html but i 
couldn't find any documentation.  is sirona a requirement for 
arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so, 
then how do i exclude the mysql lib from the configuration?
<!-- we monitor the test with sirona -->
<property name="javaagent">
mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
</property>

On 23/06/18 08:15, Romain Manni-Bucau wrote:
> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
>
> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> thanks i added it using
>> <property
>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>>
>> but i get these errors (which don't seem to stop execution)
>>
>> fail to transform class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
>> JSR/RET are not supported with computeFrames
>> optionjava.lang.RuntimeException: JSR/RET are not supported with
>> computeFrames option
>>       at org.apache.sirona.asm.Frame.a(Unknown Source)
>>       at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown Source)
>>
>> SEVERE - Can't create DataSource
>> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
>> attempted  duplicate class definition for name:
>> "com/mysql/jdbc/ConnectionImpl"
>>
>> but this one is a stopper
>>
>> SEVERE - CDI Beans module deployment failed
>> org.apache.webbeans.exception.WebBeansDeploymentException:
>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
>> Qualifiers: [@javax.enterprise.inject.Default()]
>> for injection into Field Injection Point, field name : quoteTypeDao,
>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
>> Name:null, API
>> Types:[java.lang.Object,uk.me.kissy.sales.test.QuoteGeneratorArquillian],
>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>>
>> i tried enabling remote support as i am trying remote not embedded
>> tomee.remote.support = true
>> # tomee.serialization.class.blacklist = *
>> tomee.serialization.class.whitelist = *
>>
>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
>>> You can add it in libs property of arquillian container config. Just
>> prefix
>>> the coords with mvn:.
>>>
>>> Ex: mvn:mysql:mysql-connector-jav:version
>>>
>>> It is a multiline property so you can add N libs to tomee lib this way
>>>
>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
>>>> wait...
>>>>
>>>> i have an arquillian test running up ok but it is complaining
>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
>>>> following stack trace and this message to users@tomee.apache.org :
>>>>     org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>>>> resolve class com.mysql.jdbc.Driver
>>>>
>>>> is there any way to directly bring in the mysql driver from maven
>>>> central?  or do i need to download manually and put it into
>>>> src/test/tomee/lib?
>>>>
>>>>
>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>>>> You can theorically but I'd recommand you to write it in the final
>> module
>>>>> instead of trying to use the parent which will be executed before any
>>>> other
>>>>> modules.
>>>>>
>>>>> If A depends on B which depends on C then write your tests in A for the
>>>>> complete app tests and write unit tests in B and C (potentially using
>>>>> arquillian, appcomposer or even other solutions).
>>>>>
>>>>> For reference:
>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html and
>>>>> http://tomee.apache.org/developer/testing/index.html
>>>>>
>>>>> Romain Manni-Bucau
>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>> https://github.com/rmannibucau> |
>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>
>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> it sounds like Arquillian might be the best fit in my case.  can the
>>>>>> tests inject CDI beans from the webapps or does everything need to be
>>>>>> done through http?  looking at
>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test"
>>>> it
>>>>>> looks as if beans can be injected...
>>>>>>
>>>>>> is it possible to create the tests (or at least TomEE instance) in a
>>>>>> parent pom?  i need to run several webapps at once which are all
>> modules
>>>>>> of the parent.  i think code is discouraged in parent project.
>>>>>>
>>>>>>
>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>>>> You can set the property openejb.location (or the other ones we have)
>>>> to
>>>>>>> point to an openejb.xml if you want. The advantage of the properties
>> is
>>>>>>> that it is filtered during the test and doesnt require a maven build
>>>> but
>>>>>> it
>>>>>>> is up to you and depends the project setup.
>>>>>>>
>>>>>>> Arquillian is great to test complete application*s* in a real server,
>>>>>>> ApplicationComposer is good to test small parts of applications or
>>>>>>> frameworks, TomEE,
>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>>>> deployment
>>>>>>> from the classpath + single test setup) and will save a lot of time.
>>>>>>>
>>>>>>> Romain Manni-Bucau
>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>>>> https://github.com/rmannibucau> |
>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>>>
>>>>>>>> i am trying to use ApplicationComposer to create some tests.  CDI is
>>>>>>>> scanning the classes correctly but i am a little uncertain about how
>>>> to
>>>>>>>> load a test database.
>>>>>>>>
>>>>>>>> i was going to start by just loading the database as normal as it
>> is a
>>>>>>>> copy of production database.  but how do i specify the username and
>>>>>>>> password or any other properties that are needed to connect to the
>> db?
>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
>>>> value
>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>>>
>>>>>>>> is there a way to specify the resource in an xml file?
>>>>>>>>
>>>>>>>> another question...is it better to start with Arquillian or
>>>>>>>> ApplicationComposer?
>>>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Exclude mysql from sirona instrumentation. Its bytecode is not safe.

Le sam. 23 juin 2018 01:03, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> thanks i added it using
> <property
> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
>
> but i get these errors (which don't seem to stop execution)
>
> fail to transform class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> JSR/RET are not supported with computeFrames
> optionjava.lang.RuntimeException: JSR/RET are not supported with
> computeFrames option
>      at org.apache.sirona.asm.Frame.a(Unknown Source)
>      at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown Source)
>
> SEVERE - Can't create DataSource
> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
> attempted  duplicate class definition for name:
> "com/mysql/jdbc/ConnectionImpl"
>
> but this one is a stopper
>
> SEVERE - CDI Beans module deployment failed
> org.apache.webbeans.exception.WebBeansDeploymentException:
> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> Qualifiers: [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name : quoteTypeDao,
> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> Name:null, API
> Types:[java.lang.Object,uk.me.kissy.sales.test.QuoteGeneratorArquillian],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>
> i tried enabling remote support as i am trying remote not embedded
> tomee.remote.support = true
> # tomee.serialization.class.blacklist = *
> tomee.serialization.class.whitelist = *
>
> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> > You can add it in libs property of arquillian container config. Just
> prefix
> > the coords with mvn:.
> >
> > Ex: mvn:mysql:mysql-connector-jav:version
> >
> > It is a multiline property so you can add N libs to tomee lib this way
> >
> > Le ven. 22 juin 2018 18:13, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
> >> wait...
> >>
> >> i have an arquillian test running up ok but it is complaining
> >> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
> >> following stack trace and this message to users@tomee.apache.org :
> >>    org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> >> resolve class com.mysql.jdbc.Driver
> >>
> >> is there any way to directly bring in the mysql driver from maven
> >> central?  or do i need to download manually and put it into
> >> src/test/tomee/lib?
> >>
> >>
> >> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>> You can theorically but I'd recommand you to write it in the final
> module
> >>> instead of trying to use the parent which will be executed before any
> >> other
> >>> modules.
> >>>
> >>> If A depends on B which depends on C then write your tests in A for the
> >>> complete app tests and write unit tests in B and C (potentially using
> >>> arquillian, appcomposer or even other solutions).
> >>>
> >>> For reference:
> >>> http://tomee.apache.org/developer/testing/arquillian/index.html and
> >>> http://tomee.apache.org/developer/testing/index.html
> >>>
> >>> Romain Manni-Bucau
> >>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>> <http://rmannibucau.wordpress.com> | Github <
> >> https://github.com/rmannibucau> |
> >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>
> >>>
> >>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> it sounds like Arquillian might be the best fit in my case.  can the
> >>>> tests inject CDI beans from the webapps or does everything need to be
> >>>> done through http?  looking at
> >>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test"
> >> it
> >>>> looks as if beans can be injected...
> >>>>
> >>>> is it possible to create the tests (or at least TomEE instance) in a
> >>>> parent pom?  i need to run several webapps at once which are all
> modules
> >>>> of the parent.  i think code is discouraged in parent project.
> >>>>
> >>>>
> >>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>> You can set the property openejb.location (or the other ones we have)
> >> to
> >>>>> point to an openejb.xml if you want. The advantage of the properties
> is
> >>>>> that it is filtered during the test and doesnt require a maven build
> >> but
> >>>> it
> >>>>> is up to you and depends the project setup.
> >>>>>
> >>>>> Arquillian is great to test complete application*s* in a real server,
> >>>>> ApplicationComposer is good to test small parts of applications or
> >>>>> frameworks, TomEE,
> >>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
> >> deployment
> >>>>> from the classpath + single test setup) and will save a lot of time.
> >>>>>
> >>>>> Romain Manni-Bucau
> >>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>> https://github.com/rmannibucau> |
> >>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>
> >>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>>>
> >>>>>> i am trying to use ApplicationComposer to create some tests.  CDI is
> >>>>>> scanning the classes correctly but i am a little uncertain about how
> >> to
> >>>>>> load a test database.
> >>>>>>
> >>>>>> i was going to start by just loading the database as normal as it
> is a
> >>>>>> copy of production database.  but how do i specify the username and
> >>>>>> password or any other properties that are needed to connect to the
> db?
> >>>>>>
> >>>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
> >> value
> >>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>
> >>>>>> is there a way to specify the resource in an xml file?
> >>>>>>
> >>>>>> another question...is it better to start with Arquillian or
> >>>>>> ApplicationComposer?
> >>>>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
thanks i added it using
<property 
name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>

but i get these errors (which don't seem to stop execution)

fail to transform class:com/mysql/jdbc/AbandonedConnectionCleanupThread, 
JSR/RET are not supported with computeFrames 
optionjava.lang.RuntimeException: JSR/RET are not supported with 
computeFrames option
     at org.apache.sirona.asm.Frame.a(Unknown Source)
     at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown Source)

SEVERE - Can't create DataSource
java.lang.LinkageError: loader (instance of java/net/URLClassLoader): 
attempted  duplicate class definition for name: 
"com/mysql/jdbc/ConnectionImpl"

but this one is a stopper

SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException: 
javax.enterprise.inject.UnsatisfiedResolutionException: Api type 
[uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name : quoteTypeDao, 
Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE, 
Name:null, API 
Types:[java.lang.Object,uk.me.kissy.sales.test.QuoteGeneratorArquillian], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]

i tried enabling remote support as i am trying remote not embedded
tomee.remote.support = true
# tomee.serialization.class.blacklist = *
tomee.serialization.class.whitelist = *

On 22/06/18 18:44, Romain Manni-Bucau wrote:
> You can add it in libs property of arquillian container config. Just prefix
> the coords with mvn:.
>
> Ex: mvn:mysql:mysql-connector-jav:version
>
> It is a multiline property so you can add N libs to tomee lib this way
>
> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
>> wait...
>>
>> i have an arquillian test running up ok but it is complaining
>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
>> following stack trace and this message to users@tomee.apache.org :
>>    org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
>> resolve class com.mysql.jdbc.Driver
>>
>> is there any way to directly bring in the mysql driver from maven
>> central?  or do i need to download manually and put it into
>> src/test/tomee/lib?
>>
>>
>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
>>> You can theorically but I'd recommand you to write it in the final module
>>> instead of trying to use the parent which will be executed before any
>> other
>>> modules.
>>>
>>> If A depends on B which depends on C then write your tests in A for the
>>> complete app tests and write unit tests in B and C (potentially using
>>> arquillian, appcomposer or even other solutions).
>>>
>>> For reference:
>>> http://tomee.apache.org/developer/testing/arquillian/index.html and
>>> http://tomee.apache.org/developer/testing/index.html
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>> <http://rmannibucau.wordpress.com> | Github <
>> https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>
>>>
>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> it sounds like Arquillian might be the best fit in my case.  can the
>>>> tests inject CDI beans from the webapps or does everything need to be
>>>> done through http?  looking at
>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test"
>> it
>>>> looks as if beans can be injected...
>>>>
>>>> is it possible to create the tests (or at least TomEE instance) in a
>>>> parent pom?  i need to run several webapps at once which are all modules
>>>> of the parent.  i think code is discouraged in parent project.
>>>>
>>>>
>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>>>> You can set the property openejb.location (or the other ones we have)
>> to
>>>>> point to an openejb.xml if you want. The advantage of the properties is
>>>>> that it is filtered during the test and doesnt require a maven build
>> but
>>>> it
>>>>> is up to you and depends the project setup.
>>>>>
>>>>> Arquillian is great to test complete application*s* in a real server,
>>>>> ApplicationComposer is good to test small parts of applications or
>>>>> frameworks, TomEE,
>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
>> deployment
>>>>> from the classpath + single test setup) and will save a lot of time.
>>>>>
>>>>> Romain Manni-Bucau
>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>>>> <http://rmannibucau.wordpress.com> | Github <
>>>> https://github.com/rmannibucau> |
>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>>>
>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>>>
>>>>>> i am trying to use ApplicationComposer to create some tests.  CDI is
>>>>>> scanning the classes correctly but i am a little uncertain about how
>> to
>>>>>> load a test database.
>>>>>>
>>>>>> i was going to start by just loading the database as normal as it is a
>>>>>> copy of production database.  but how do i specify the username and
>>>>>> password or any other properties that are needed to connect to the db?
>>>>>>
>>>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
>> value
>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>>>
>>>>>> is there a way to specify the resource in an xml file?
>>>>>>
>>>>>> another question...is it better to start with Arquillian or
>>>>>> ApplicationComposer?
>>>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
You can add it in libs property of arquillian container config. Just prefix
the coords with mvn:.

Ex: mvn:mysql:mysql-connector-jav:version

It is a multiline property so you can add N libs to tomee lib this way

Le ven. 22 juin 2018 18:13, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please
> wait...
>
> i have an arquillian test running up ok but it is complaining
> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
> following stack trace and this message to users@tomee.apache.org :
>   org.apache.xbean.propertyeditor.PropertyEditorException: Unable to
> resolve class com.mysql.jdbc.Driver
>
> is there any way to directly bring in the mysql driver from maven
> central?  or do i need to download manually and put it into
> src/test/tomee/lib?
>
>
> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> > You can theorically but I'd recommand you to write it in the final module
> > instead of trying to use the parent which will be executed before any
> other
> > modules.
> >
> > If A depends on B which depends on C then write your tests in A for the
> > complete app tests and write unit tests in B and C (potentially using
> > arquillian, appcomposer or even other solutions).
> >
> > For reference:
> > http://tomee.apache.org/developer/testing/arquillian/index.html and
> > http://tomee.apache.org/developer/testing/index.html
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >
> >
> >
> > Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> it sounds like Arquillian might be the best fit in my case.  can the
> >> tests inject CDI beans from the webapps or does everything need to be
> >> done through http?  looking at
> >> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test"
> it
> >> looks as if beans can be injected...
> >>
> >> is it possible to create the tests (or at least TomEE instance) in a
> >> parent pom?  i need to run several webapps at once which are all modules
> >> of the parent.  i think code is discouraged in parent project.
> >>
> >>
> >> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>> You can set the property openejb.location (or the other ones we have)
> to
> >>> point to an openejb.xml if you want. The advantage of the properties is
> >>> that it is filtered during the test and doesnt require a maven build
> but
> >> it
> >>> is up to you and depends the project setup.
> >>>
> >>> Arquillian is great to test complete application*s* in a real server,
> >>> ApplicationComposer is good to test small parts of applications or
> >>> frameworks, TomEE,
> >>> TomEEEmbeddedSingleRunner is great to test a real app (single
> deployment
> >>> from the classpath + single test setup) and will save a lot of time.
> >>>
> >>> Romain Manni-Bucau
> >>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>> <http://rmannibucau.wordpress.com> | Github <
> >> https://github.com/rmannibucau> |
> >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>
> >>>
> >>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>> <ma...@nbmlaw.co.uk.invalid> a écrit :
> >>>
> >>>> i am trying to use ApplicationComposer to create some tests.  CDI is
> >>>> scanning the classes correctly but i am a little uncertain about how
> to
> >>>> load a test database.
> >>>>
> >>>> i was going to start by just loading the database as normal as it is a
> >>>> copy of production database.  but how do i specify the username and
> >>>> password or any other properties that are needed to connect to the db?
> >>>>
> >>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb",
> value
> >>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>
> >>>> is there a way to specify the resource in an xml file?
> >>>>
> >>>> another question...is it better to start with Arquillian or
> >>>> ApplicationComposer?
> >>>>
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus please 
wait...

i have an arquillian test running up ok but it is complaining
SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the 
following stack trace and this message to users@tomee.apache.org :
  org.apache.xbean.propertyeditor.PropertyEditorException: Unable to 
resolve class com.mysql.jdbc.Driver

is there any way to directly bring in the mysql driver from maven 
central?  or do i need to download manually and put it into 
src/test/tomee/lib?


On 22/06/18 10:03, Romain Manni-Bucau wrote:
> You can theorically but I'd recommand you to write it in the final module
> instead of trying to use the parent which will be executed before any other
> modules.
>
> If A depends on B which depends on C then write your tests in A for the
> complete app tests and write unit tests in B and C (potentially using
> arquillian, appcomposer or even other solutions).
>
> For reference:
> http://tomee.apache.org/developer/testing/arquillian/index.html and
> http://tomee.apache.org/developer/testing/index.html
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <https://www.packtpub.com/application-development/java-ee-8-high-performance>
>
>
> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> it sounds like Arquillian might be the best fit in my case.  can the
>> tests inject CDI beans from the webapps or does everything need to be
>> done through http?  looking at
>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test" it
>> looks as if beans can be injected...
>>
>> is it possible to create the tests (or at least TomEE instance) in a
>> parent pom?  i need to run several webapps at once which are all modules
>> of the parent.  i think code is discouraged in parent project.
>>
>>
>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
>>> You can set the property openejb.location (or the other ones we have) to
>>> point to an openejb.xml if you want. The advantage of the properties is
>>> that it is filtered during the test and doesnt require a maven build but
>> it
>>> is up to you and depends the project setup.
>>>
>>> Arquillian is great to test complete application*s* in a real server,
>>> ApplicationComposer is good to test small parts of applications or
>>> frameworks, TomEE,
>>> TomEEEmbeddedSingleRunner is great to test a real app (single deployment
>>> from the classpath + single test setup) and will save a lot of time.
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://rmannibucau.metawerx.net/> | Old Blog
>>> <http://rmannibucau.wordpress.com> | Github <
>> https://github.com/rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
>>> <
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>>>
>>>
>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
>>> <ma...@nbmlaw.co.uk.invalid> a écrit :
>>>
>>>> i am trying to use ApplicationComposer to create some tests.  CDI is
>>>> scanning the classes correctly but i am a little uncertain about how to
>>>> load a test database.
>>>>
>>>> i was going to start by just loading the database as normal as it is a
>>>> copy of production database.  but how do i specify the username and
>>>> password or any other properties that are needed to connect to the db?
>>>>
>>>> @ContainerProperties(@ContainerProperties.Property(name = "mydb", value
>>>> = "jdbc:mysql://localhost:3306/mydb"))
>>>>
>>>> is there a way to specify the resource in an xml file?
>>>>
>>>> another question...is it better to start with Arquillian or
>>>> ApplicationComposer?
>>>>
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
You can theorically but I'd recommand you to write it in the final module
instead of trying to use the parent which will be executed before any other
modules.

If A depends on B which depends on C then write your tests in A for the
complete app tests and write unit tests in B and C (potentially using
arquillian, appcomposer or even other solutions).

For reference:
http://tomee.apache.org/developer/testing/arquillian/index.html and
http://tomee.apache.org/developer/testing/index.html

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> it sounds like Arquillian might be the best fit in my case.  can the
> tests inject CDI beans from the webapps or does everything need to be
> done through http?  looking at
> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test" it
> looks as if beans can be injected...
>
> is it possible to create the tests (or at least TomEE instance) in a
> parent pom?  i need to run several webapps at once which are all modules
> of the parent.  i think code is discouraged in parent project.
>
>
> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> > You can set the property openejb.location (or the other ones we have) to
> > point to an openejb.xml if you want. The advantage of the properties is
> > that it is filtered during the test and doesnt require a maven build but
> it
> > is up to you and depends the project setup.
> >
> > Arquillian is great to test complete application*s* in a real server,
> > ApplicationComposer is good to test small parts of applications or
> > frameworks, TomEE,
> > TomEEEmbeddedSingleRunner is great to test a real app (single deployment
> > from the classpath + single test setup) and will save a lot of time.
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > <https://rmannibucau.metawerx.net/> | Old Blog
> > <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >
> >
> >
> > Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> > <ma...@nbmlaw.co.uk.invalid> a écrit :
> >
> >> i am trying to use ApplicationComposer to create some tests.  CDI is
> >> scanning the classes correctly but i am a little uncertain about how to
> >> load a test database.
> >>
> >> i was going to start by just loading the database as normal as it is a
> >> copy of production database.  but how do i specify the username and
> >> password or any other properties that are needed to connect to the db?
> >>
> >> @ContainerProperties(@ContainerProperties.Property(name = "mydb", value
> >> = "jdbc:mysql://localhost:3306/mydb"))
> >>
> >> is there a way to specify the resource in an xml file?
> >>
> >> another question...is it better to start with Arquillian or
> >> ApplicationComposer?
> >>
>
>

Re: tomee testing

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk.INVALID>.
it sounds like Arquillian might be the best fit in my case.  can the 
tests inject CDI beans from the webapps or does everything need to be 
done through http?  looking at 
https://tomee.apache.org/refcard/refcard.html "Simple Arquilian Test" it 
looks as if beans can be injected...

is it possible to create the tests (or at least TomEE instance) in a 
parent pom?  i need to run several webapps at once which are all modules 
of the parent.  i think code is discouraged in parent project.


On 22/06/18 09:18, Romain Manni-Bucau wrote:
> You can set the property openejb.location (or the other ones we have) to
> point to an openejb.xml if you want. The advantage of the properties is
> that it is filtered during the test and doesnt require a maven build but it
> is up to you and depends the project setup.
>
> Arquillian is great to test complete application*s* in a real server,
> ApplicationComposer is good to test small parts of applications or
> frameworks, TomEE,
> TomEEEmbeddedSingleRunner is great to test a real app (single deployment
> from the classpath + single test setup) and will save a lot of time.
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://rmannibucau.metawerx.net/> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> <https://www.packtpub.com/application-development/java-ee-8-high-performance>
>
>
> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> <ma...@nbmlaw.co.uk.invalid> a écrit :
>
>> i am trying to use ApplicationComposer to create some tests.  CDI is
>> scanning the classes correctly but i am a little uncertain about how to
>> load a test database.
>>
>> i was going to start by just loading the database as normal as it is a
>> copy of production database.  but how do i specify the username and
>> password or any other properties that are needed to connect to the db?
>>
>> @ContainerProperties(@ContainerProperties.Property(name = "mydb", value
>> = "jdbc:mysql://localhost:3306/mydb"))
>>
>> is there a way to specify the resource in an xml file?
>>
>> another question...is it better to start with Arquillian or
>> ApplicationComposer?
>>


Re: tomee testing

Posted by Romain Manni-Bucau <rm...@gmail.com>.
You can set the property openejb.location (or the other ones we have) to
point to an openejb.xml if you want. The advantage of the properties is
that it is filtered during the test and doesnt require a maven build but it
is up to you and depends the project setup.

Arquillian is great to test complete application*s* in a real server,
ApplicationComposer is good to test small parts of applications or
frameworks, TomEE,
TomEEEmbeddedSingleRunner is great to test a real app (single deployment
from the classpath + single test setup) and will save a lot of time.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
<ma...@nbmlaw.co.uk.invalid> a écrit :

> i am trying to use ApplicationComposer to create some tests.  CDI is
> scanning the classes correctly but i am a little uncertain about how to
> load a test database.
>
> i was going to start by just loading the database as normal as it is a
> copy of production database.  but how do i specify the username and
> password or any other properties that are needed to connect to the db?
>
> @ContainerProperties(@ContainerProperties.Property(name = "mydb", value
> = "jdbc:mysql://localhost:3306/mydb"))
>
> is there a way to specify the resource in an xml file?
>
> another question...is it better to start with Arquillian or
> ApplicationComposer?
>