tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: tomee testing
Date Sun, 24 Jun 2018 10:01:56 GMT
Appcopposer loads classes in the classpath so add it as a test dependency.

Le dim. 24 juin 2018 11:37, Matthew Broadhead
<matthew.broadhead@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
> > <matthew.broadhead@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
> >>>> <matthew.broadhead@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
> >>>>>> <matthew.broadhead@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
> >>>>>>>> <matthew.broadhead@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
> >>>>>>>>>> <matthew.broadhead@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
> >>>>>>>>>>>> <matthew.broadhead@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
> >>>>>>>>>>>>>> <matthew.broadhead@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?
> >>>>>>>>>>>>>>>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message