tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk.INVALID>
Subject Re: tomee testing
Date Sat, 23 Jun 2018 18:09:44 GMT
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
View raw message