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 16:53:55 GMT
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