You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Kl...@ethalon.de on 2012/07/16 16:22:42 UTC

Unit tests hanging with openejb+dbunit+spring

Hi OpenEJB experts
We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works pretty 
well in most cases so far. But with some tests we run into a strange 
problem:
If the test class has more than a certain number of test methods (e.g. 20 
methods), the test simply hangs forever. It does not fail, it just hangs 
and this is really bad for our build server. If we comment out one method, 
the test runs fine. Our current workaround is to split up the test class 
in multiple classes and then all test methods work fine, but this is kind 
of a stupid fix. 

Does anybody ever encountered this behavior? Any ideas to fix this?

Thanks 
Klaus




Re: Re: Antwort: Re: Unit tests hanging with openejb+dbunit+spring

Posted by Romain Manni-Bucau <rm...@gmail.com>.
if you don't call close explicitely maybe you start too much openejb and
datasource pool for your database if you have several tests

- Romain


2012/7/17 <Kl...@ethalon.de>

> In the meantime we found another workaround for the issue: If we set the
> MaxActive property on the datasource to -1, we do not run into the hanging
> problem. But nevertheless, I would like to understand, what could be the
> reason for the problem, so here are more details:
>
> We use "new IntialContext()" to "startup" openejb. In detail, we have a
> factory class implementing Springs FactoryBean interface and instatiate an
> instance via Spring. I ensured that the new InitialContext() is only
> called once per test class. As openejb is managed by Spring we do not
> explicitly call "close" somewhere. In our EJBs the JPA-EntityManager is
> injected via the @PersistenceContext annotation, so I assume that the
> whole database management should be handled properly by openejb.
> In our tests each test method initializes a in-memory database (derby)
> using dbunit and then executes the test on an EJB. The test methods run
> successfully if executed standalone, but if all methods of the test class
> are executed, the execution hangs after a number of successful methods.
>
> I did not provide test class yet, as there are some more classes involved
> and would not make this reply too complicated. But if needed, I will
> collect the needed classes and send them.
>
>
> Thanks
> Klaus
>
>
>
> Von:
> Romain Manni-Bucau <rm...@gmail.com>
> An:
> users@openejb.apache.org
> Datum:
> 17.07.2012 09:11
> Betreff:
> Re: Antwort: Re: Unit tests hanging with openejb+dbunit+spring
>
>
>
> How is managed openejb? New initialcontext? Ejbcontainer? Openejb runner?
> Snapshot arquiilian adapter? Applicationcompozer?
>
> If on of the two first i mentionned do you call close?
>
> The best is probably to share a test class removing your business part, is
> it possible?
>
> - Romain
> Le 17 juil. 2012 08:54, <Kl...@ethalon.de> a écrit :
>
> > Hi Romain
> > yes, see stack trace of the hanging thread below. After some more
> > investigation it looks like it's hanging while trying to get database
> > connections from the connection pool. Seems that connectins are not
> > properly freed and returned to the pool?
> >
> > Any help is appreciated.
> > Klaus
> >
> > Thread [main] (Suspended)
> >         waiting for: GenericObjectPool$Latch  (id=146)
> >         Object.wait(long) line: not available [native method]
> >         GenericObjectPool$Latch(Object).wait() line: 485 [local
> variables
> > unavailable]
> >         GenericObjectPool.borrowObject() line: 1115
> >         ManagedConnection.updateTransactionStatus() line: 117
> >         ManagedConnection.<init>(ObjectPool, TransactionRegistry,
> boolean)
> > line: 55
> >         ManagedDataSource.getConnection() line: 77
> >         BasicManagedDataSource(BasicDataSource).getConnection() line:
> 1044
> >
> >         DecoratingDataSource(DelegatingDataSource).getConnection() line:
> > 110
> >         DecoratingDataSource.getConnection() line: 87
> >         JDBCStoreManager.connectInternal() line: 960
> >         JDBCStoreManager.connect(boolean) line: 945
> >         JDBCStoreManager.getConnection() line: 240
> >         FinderQueryImpl.execute(OpenJPAStateManager, StoreManager,
> > FetchConfiguration) line: 139
> >         JDBCStoreManager.getInitializeStateResult(OpenJPAStateManager,
> > ClassMapping, JDBCFetchConfiguration, int) line: 537
> >         JDBCStoreManager.initializeState(OpenJPAStateManager, PCState,
> > JDBCFetchConfiguration, ConnectionInfo) line: 349
> >         JDBCStoreManager.initialize(OpenJPAStateManager, PCState,
> > FetchConfiguration, Object) line: 304
> >  ROPStoreManager(DelegatingStoreManager).initialize(OpenJPAStateManager,
> > PCState, FetchConfiguration, Object) line: 112
> >         ROPStoreManager.initialize(OpenJPAStateManager, PCState,
> > FetchConfiguration, Object) line: 57
> >         BrokerImpl.initialize(StateManagerImpl, boolean,
> > FetchConfiguration, Object) line: 1036
> >         BrokerImpl.find(Object, FetchConfiguration, BitSet, Object, int,
> > FindCallbacks) line: 994
> >         BrokerImpl.find(Object, boolean, FindCallbacks) line: 911
> >         DelegatingBroker.find(Object, boolean, FindCallbacks) line: 231
> >         EntityManagerImpl.find(Class<T>, Object) line: 487
> >         JtaEntityManager.find(Class<T>, Object) line: 157
> >         MmData(BasicDataService).findById(Class<T>, U) line: 96
> >         GeneratedMethodAccessor208.invoke(Object, Object[]) line: not
> > available
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         StatsInterceptor.record(InvocationContext, Method) line: 176
> >         StatsInterceptor.invoke(InvocationContext) line: 95
> >         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> > available
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         CdiInterceptor.invoke(InvocationContext) line: 129
> >         CdiInterceptor.access$000(CdiInterceptor, InvocationContext)
> line:
> > 45
> >         CdiInterceptor$1.call() line: 66
> >         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
> >         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> > available
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         InterceptorStack.invoke(Object...) line: 138
> >         StatelessContainer._invoke(Method, Method, Object[], Instance,
> > ThreadContext, InterfaceType) line: 226
> >         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> > Object[], Object) line: 178
> >
> >
> >
>
> StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> > Method, Object[], Object) line: 260
> >
> StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> > Method, Object[], Object) line: 240
> >         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> > Class, Method, Object[]) line: 91
> >         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> > Method, Object[]) line: 284
> >         $Proxy98.findById(Class, Object) line: not available
> >         InvoiceServiceLoadHelper.loadInvoiceHeaderEntity(Long,
> > InventoryManagementContainer) line: 217
> >         InvoiceServiceImpl.saveInvoiceItem(UserContainer, InvoiceItem,
> > Long, Short, InvoiceItemResponse) line: 381
> >
> >
> >
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody46(InventoryManagementLogicEJB,
> > UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 234
> >
> >
> >
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody47$advice(InventoryManagementLogicEJB,
> > UserContainer, InvoiceItem, Long, Short, JoinPoint, LogicServiceAspect,
> > AroundClosure, JoinPoint$StaticPart, JoinPoint) line: 117
> >
> >
> >
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody48(InventoryManagementLogicEJB,
> > UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 1
> >
> >
> >
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody49$advice(InventoryManagementLogicEJB,
> > UserContainer, InvoiceItem, Long, Short, JoinPoint, GuardAspect,
> > AroundClosure, JoinPoint) line: 135
> >         InventoryManagementLogicEJB.saveInvoiceItem(UserContainer,
> > InvoiceItem, Long, Short) line: 1
> >         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> > not available [native method]
> >         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         StatsInterceptor.record(InvocationContext, Method) line: 176
> >         StatsInterceptor.invoke(InvocationContext) line: 95
> >         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> > available
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         CdiInterceptor.invoke(InvocationContext) line: 129
> >         CdiInterceptor.access$000(CdiInterceptor, InvocationContext)
> line:
> > 45
> >         CdiInterceptor$1.call() line: 66
> >         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
> >         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> > available
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >
> >
> >
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> > line: 181
> >         ReflectionInvocationContext.proceed() line: 163
> >         InterceptorStack.invoke(Object...) line: 138
> >         StatelessContainer._invoke(Method, Method, Object[], Instance,
> > ThreadContext, InterfaceType) line: 226
> >         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> > Object[], Object) line: 178
> >
> >
> >
>
> StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> > Method, Object[], Object) line: 260
> >
> StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> > Method, Object[], Object) line: 240
> >         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> > Class, Method, Object[]) line: 91
> >         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> > Method, Object[]) line: 284
> >         $Proxy97.saveInvoiceItem(UserContainer, InvoiceItem, Long,
> Short)
> > line: not available
> >         InvoiceServiceImplTest.testSaveInvoiceItemNoAmount() line: 882
> >         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> > not available [native method]
> >         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> >         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> >         Method.invoke(Object, Object...) line: 597
> >         FrameworkMethod$1.runReflectiveCall() line: 44
> >         FrameworkMethod$1(ReflectiveCallable).run() line: 15
> >         FrameworkMethod.invokeExplosively(Object, Object...) line: 41
> >         InvokeMethod.evaluate() line: 20
> >         RunBefores.evaluate() line: 28
> >         RunBeforeTestMethodCallbacks.evaluate() line: 74
> >         RunAfters.evaluate() line: 31
> >         RunAfterTestMethodCallbacks.evaluate() line: 82
> >         SpringRepeat.evaluate() line: 72
> >         SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier)
> > line: 231
> >         SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object,
> > RunNotifier) line: 49
> >         ParentRunner$3.run() line: 193
> >         ParentRunner$1.schedule(Runnable) line: 52
> > SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier)
> > line: 191
> >         ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42
> >         ParentRunner$2.evaluate() line: 184
> >         RunBeforeTestClassCallbacks.evaluate() line: 61
> >         RunAfterTestClassCallbacks.evaluate() line: 70
> >         SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line:
> > 236
> >         SpringJUnit4ClassRunner.run(RunNotifier) line: 174
> >         JUnit4TestClassReference(JUnit4TestReference).run(TestExecution)
> > line: 50
> >         TestExecution.run(ITestReference[]) line: 38
> >         RemoteTestRunner.runTests(String[], String, TestExecution) line:
> > 467
> >         RemoteTestRunner.runTests(TestExecution) line: 683
> >         RemoteTestRunner.run() line: 390
> >         RemoteTestRunner.main(String[]) line: 197
> >
> >
> >
> >
> > Von:
> > Romain Manni-Bucau <rm...@gmail.com>
> > An:
> > users@openejb.apache.org
> > Datum:
> > 16.07.2012 17:03
> > Betreff:
> > Re: Unit tests hanging with openejb+dbunit+spring
> >
> >
> >
> > Hi,
> >
> > Any luck to get a thread stack when it hangs?
> >
> > - Romain
> > Le 16 juil. 2012 16:23, <Kl...@ethalon.de> a écrit :
> >
> > > Hi OpenEJB experts
> > > We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works
> pretty
> > > well in most cases so far. But with some tests we run into a strange
> > > problem:
> > > If the test class has more than a certain number of test methods (e.g.
> > 20
> > > methods), the test simply hangs forever. It does not fail, it just
> hangs
> > > and this is really bad for our build server. If we comment out one
> > method,
> > > the test runs fine. Our current workaround is to split up the test
> class
> > > in multiple classes and then all test methods work fine, but this is
> > kind
> > > of a stupid fix.
> > >
> > > Does anybody ever encountered this behavior? Any ideas to fix this?
> > >
> > > Thanks
> > > Klaus
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
>
>
>
>
>

Antwort: Re: Antwort: Re: Unit tests hanging with openejb+dbunit+spring

Posted by Kl...@ethalon.de.
In the meantime we found another workaround for the issue: If we set the 
MaxActive property on the datasource to -1, we do not run into the hanging 
problem. But nevertheless, I would like to understand, what could be the 
reason for the problem, so here are more details:

We use "new IntialContext()" to "startup" openejb. In detail, we have a 
factory class implementing Springs FactoryBean interface and instatiate an 
instance via Spring. I ensured that the new InitialContext() is only 
called once per test class. As openejb is managed by Spring we do not 
explicitly call "close" somewhere. In our EJBs the JPA-EntityManager is 
injected via the @PersistenceContext annotation, so I assume that the 
whole database management should be handled properly by openejb. 
In our tests each test method initializes a in-memory database (derby) 
using dbunit and then executes the test on an EJB. The test methods run 
successfully if executed standalone, but if all methods of the test class 
are executed, the execution hangs after a number of successful methods.

I did not provide test class yet, as there are some more classes involved 
and would not make this reply too complicated. But if needed, I will 
collect the needed classes and send them.


Thanks
Klaus



Von:
Romain Manni-Bucau <rm...@gmail.com>
An:
users@openejb.apache.org
Datum:
17.07.2012 09:11
Betreff:
Re: Antwort: Re: Unit tests hanging with openejb+dbunit+spring



How is managed openejb? New initialcontext? Ejbcontainer? Openejb runner?
Snapshot arquiilian adapter? Applicationcompozer?

If on of the two first i mentionned do you call close?

The best is probably to share a test class removing your business part, is
it possible?

- Romain
Le 17 juil. 2012 08:54, <Kl...@ethalon.de> a écrit :

> Hi Romain
> yes, see stack trace of the hanging thread below. After some more
> investigation it looks like it's hanging while trying to get database
> connections from the connection pool. Seems that connectins are not
> properly freed and returned to the pool?
>
> Any help is appreciated.
> Klaus
>
> Thread [main] (Suspended)
>         waiting for: GenericObjectPool$Latch  (id=146)
>         Object.wait(long) line: not available [native method]
>         GenericObjectPool$Latch(Object).wait() line: 485 [local 
variables
> unavailable]
>         GenericObjectPool.borrowObject() line: 1115
>         ManagedConnection.updateTransactionStatus() line: 117
>         ManagedConnection.<init>(ObjectPool, TransactionRegistry, 
boolean)
> line: 55
>         ManagedDataSource.getConnection() line: 77
>         BasicManagedDataSource(BasicDataSource).getConnection() line: 
1044
>
>         DecoratingDataSource(DelegatingDataSource).getConnection() line:
> 110
>         DecoratingDataSource.getConnection() line: 87
>         JDBCStoreManager.connectInternal() line: 960
>         JDBCStoreManager.connect(boolean) line: 945
>         JDBCStoreManager.getConnection() line: 240
>         FinderQueryImpl.execute(OpenJPAStateManager, StoreManager,
> FetchConfiguration) line: 139
>         JDBCStoreManager.getInitializeStateResult(OpenJPAStateManager,
> ClassMapping, JDBCFetchConfiguration, int) line: 537
>         JDBCStoreManager.initializeState(OpenJPAStateManager, PCState,
> JDBCFetchConfiguration, ConnectionInfo) line: 349
>         JDBCStoreManager.initialize(OpenJPAStateManager, PCState,
> FetchConfiguration, Object) line: 304
>  ROPStoreManager(DelegatingStoreManager).initialize(OpenJPAStateManager,
> PCState, FetchConfiguration, Object) line: 112
>         ROPStoreManager.initialize(OpenJPAStateManager, PCState,
> FetchConfiguration, Object) line: 57
>         BrokerImpl.initialize(StateManagerImpl, boolean,
> FetchConfiguration, Object) line: 1036
>         BrokerImpl.find(Object, FetchConfiguration, BitSet, Object, int,
> FindCallbacks) line: 994
>         BrokerImpl.find(Object, boolean, FindCallbacks) line: 911
>         DelegatingBroker.find(Object, boolean, FindCallbacks) line: 231
>         EntityManagerImpl.find(Class<T>, Object) line: 487
>         JtaEntityManager.find(Class<T>, Object) line: 157
>         MmData(BasicDataService).findById(Class<T>, U) line: 96
>         GeneratedMethodAccessor208.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         StatsInterceptor.record(InvocationContext, Method) line: 176
>         StatsInterceptor.invoke(InvocationContext) line: 95
>         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         CdiInterceptor.invoke(InvocationContext) line: 129
>         CdiInterceptor.access$000(CdiInterceptor, InvocationContext) 
line:
> 45
>         CdiInterceptor$1.call() line: 66
>         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
>         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         InterceptorStack.invoke(Object...) line: 138
>         StatelessContainer._invoke(Method, Method, Object[], Instance,
> ThreadContext, InterfaceType) line: 226
>         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> Object[], Object) line: 178
>
>
> 
StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> Method, Object[], Object) line: 260
> 
StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> Method, Object[], Object) line: 240
>         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> Class, Method, Object[]) line: 91
>         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> Method, Object[]) line: 284
>         $Proxy98.findById(Class, Object) line: not available
>         InvoiceServiceLoadHelper.loadInvoiceHeaderEntity(Long,
> InventoryManagementContainer) line: 217
>         InvoiceServiceImpl.saveInvoiceItem(UserContainer, InvoiceItem,
> Long, Short, InvoiceItemResponse) line: 381
>
>
> 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody46(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 234
>
>
> 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody47$advice(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint, LogicServiceAspect,
> AroundClosure, JoinPoint$StaticPart, JoinPoint) line: 117
>
>
> 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody48(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 1
>
>
> 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody49$advice(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint, GuardAspect,
> AroundClosure, JoinPoint) line: 135
>         InventoryManagementLogicEJB.saveInvoiceItem(UserContainer,
> InvoiceItem, Long, Short) line: 1
>         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> not available [native method]
>         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         StatsInterceptor.record(InvocationContext, Method) line: 176
>         StatsInterceptor.invoke(InvocationContext) line: 95
>         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         CdiInterceptor.invoke(InvocationContext) line: 129
>         CdiInterceptor.access$000(CdiInterceptor, InvocationContext) 
line:
> 45
>         CdiInterceptor$1.call() line: 66
>         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
>         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         InterceptorStack.invoke(Object...) line: 138
>         StatelessContainer._invoke(Method, Method, Object[], Instance,
> ThreadContext, InterfaceType) line: 226
>         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> Object[], Object) line: 178
>
>
> 
StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> Method, Object[], Object) line: 260
> 
StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> Method, Object[], Object) line: 240
>         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> Class, Method, Object[]) line: 91
>         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> Method, Object[]) line: 284
>         $Proxy97.saveInvoiceItem(UserContainer, InvoiceItem, Long, 
Short)
> line: not available
>         InvoiceServiceImplTest.testSaveInvoiceItemNoAmount() line: 882
>         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> not available [native method]
>         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>         FrameworkMethod$1.runReflectiveCall() line: 44
>         FrameworkMethod$1(ReflectiveCallable).run() line: 15
>         FrameworkMethod.invokeExplosively(Object, Object...) line: 41
>         InvokeMethod.evaluate() line: 20
>         RunBefores.evaluate() line: 28
>         RunBeforeTestMethodCallbacks.evaluate() line: 74
>         RunAfters.evaluate() line: 31
>         RunAfterTestMethodCallbacks.evaluate() line: 82
>         SpringRepeat.evaluate() line: 72
>         SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier)
> line: 231
>         SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object,
> RunNotifier) line: 49
>         ParentRunner$3.run() line: 193
>         ParentRunner$1.schedule(Runnable) line: 52
> SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier)
> line: 191
>         ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42
>         ParentRunner$2.evaluate() line: 184
>         RunBeforeTestClassCallbacks.evaluate() line: 61
>         RunAfterTestClassCallbacks.evaluate() line: 70
>         SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line:
> 236
>         SpringJUnit4ClassRunner.run(RunNotifier) line: 174
>         JUnit4TestClassReference(JUnit4TestReference).run(TestExecution)
> line: 50
>         TestExecution.run(ITestReference[]) line: 38
>         RemoteTestRunner.runTests(String[], String, TestExecution) line:
> 467
>         RemoteTestRunner.runTests(TestExecution) line: 683
>         RemoteTestRunner.run() line: 390
>         RemoteTestRunner.main(String[]) line: 197
>
>
>
>
> Von:
> Romain Manni-Bucau <rm...@gmail.com>
> An:
> users@openejb.apache.org
> Datum:
> 16.07.2012 17:03
> Betreff:
> Re: Unit tests hanging with openejb+dbunit+spring
>
>
>
> Hi,
>
> Any luck to get a thread stack when it hangs?
>
> - Romain
> Le 16 juil. 2012 16:23, <Kl...@ethalon.de> a écrit :
>
> > Hi OpenEJB experts
> > We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works 
pretty
> > well in most cases so far. But with some tests we run into a strange
> > problem:
> > If the test class has more than a certain number of test methods (e.g.
> 20
> > methods), the test simply hangs forever. It does not fail, it just 
hangs
> > and this is really bad for our build server. If we comment out one
> method,
> > the test runs fine. Our current workaround is to split up the test 
class
> > in multiple classes and then all test methods work fine, but this is
> kind
> > of a stupid fix.
> >
> > Does anybody ever encountered this behavior? Any ideas to fix this?
> >
> > Thanks
> > Klaus
> >
> >
> >
> >
>
>
>
>
>





Re: Antwort: Re: Unit tests hanging with openejb+dbunit+spring

Posted by Romain Manni-Bucau <rm...@gmail.com>.
How is managed openejb? New initialcontext? Ejbcontainer? Openejb runner?
Snapshot arquiilian adapter? Applicationcompozer?

If on of the two first i mentionned do you call close?

The best is probably to share a test class removing your business part, is
it possible?

- Romain
Le 17 juil. 2012 08:54, <Kl...@ethalon.de> a écrit :

> Hi Romain
> yes, see stack trace of the hanging thread below. After some more
> investigation it looks like it's hanging while trying to get database
> connections from the connection pool. Seems that connectins are not
> properly freed and returned to the pool?
>
> Any help is appreciated.
> Klaus
>
> Thread [main] (Suspended)
>         waiting for: GenericObjectPool$Latch  (id=146)
>         Object.wait(long) line: not available [native method]
>         GenericObjectPool$Latch(Object).wait() line: 485 [local variables
> unavailable]
>         GenericObjectPool.borrowObject() line: 1115
>         ManagedConnection.updateTransactionStatus() line: 117
>         ManagedConnection.<init>(ObjectPool, TransactionRegistry, boolean)
> line: 55
>         ManagedDataSource.getConnection() line: 77
>         BasicManagedDataSource(BasicDataSource).getConnection() line: 1044
>
>         DecoratingDataSource(DelegatingDataSource).getConnection() line:
> 110
>         DecoratingDataSource.getConnection() line: 87
>         JDBCStoreManager.connectInternal() line: 960
>         JDBCStoreManager.connect(boolean) line: 945
>         JDBCStoreManager.getConnection() line: 240
>         FinderQueryImpl.execute(OpenJPAStateManager, StoreManager,
> FetchConfiguration) line: 139
>         JDBCStoreManager.getInitializeStateResult(OpenJPAStateManager,
> ClassMapping, JDBCFetchConfiguration, int) line: 537
>         JDBCStoreManager.initializeState(OpenJPAStateManager, PCState,
> JDBCFetchConfiguration, ConnectionInfo) line: 349
>         JDBCStoreManager.initialize(OpenJPAStateManager, PCState,
> FetchConfiguration, Object) line: 304
>  ROPStoreManager(DelegatingStoreManager).initialize(OpenJPAStateManager,
> PCState, FetchConfiguration, Object) line: 112
>         ROPStoreManager.initialize(OpenJPAStateManager, PCState,
> FetchConfiguration, Object) line: 57
>         BrokerImpl.initialize(StateManagerImpl, boolean,
> FetchConfiguration, Object) line: 1036
>         BrokerImpl.find(Object, FetchConfiguration, BitSet, Object, int,
> FindCallbacks) line: 994
>         BrokerImpl.find(Object, boolean, FindCallbacks) line: 911
>         DelegatingBroker.find(Object, boolean, FindCallbacks) line: 231
>         EntityManagerImpl.find(Class<T>, Object) line: 487
>         JtaEntityManager.find(Class<T>, Object) line: 157
>         MmData(BasicDataService).findById(Class<T>, U) line: 96
>         GeneratedMethodAccessor208.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         StatsInterceptor.record(InvocationContext, Method) line: 176
>         StatsInterceptor.invoke(InvocationContext) line: 95
>         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         CdiInterceptor.invoke(InvocationContext) line: 129
>         CdiInterceptor.access$000(CdiInterceptor, InvocationContext) line:
> 45
>         CdiInterceptor$1.call() line: 66
>         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
>         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         InterceptorStack.invoke(Object...) line: 138
>         StatelessContainer._invoke(Method, Method, Object[], Instance,
> ThreadContext, InterfaceType) line: 226
>         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> Object[], Object) line: 178
>
>
> StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> Method, Object[], Object) line: 260
>  StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> Method, Object[], Object) line: 240
>         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> Class, Method, Object[]) line: 91
>         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> Method, Object[]) line: 284
>         $Proxy98.findById(Class, Object) line: not available
>         InvoiceServiceLoadHelper.loadInvoiceHeaderEntity(Long,
> InventoryManagementContainer) line: 217
>         InvoiceServiceImpl.saveInvoiceItem(UserContainer, InvoiceItem,
> Long, Short, InvoiceItemResponse) line: 381
>
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody46(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 234
>
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody47$advice(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint, LogicServiceAspect,
> AroundClosure, JoinPoint$StaticPart, JoinPoint) line: 117
>
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody48(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 1
>
>
> InventoryManagementLogicEJB.saveInvoiceItem_aroundBody49$advice(InventoryManagementLogicEJB,
> UserContainer, InvoiceItem, Long, Short, JoinPoint, GuardAspect,
> AroundClosure, JoinPoint) line: 135
>         InventoryManagementLogicEJB.saveInvoiceItem(UserContainer,
> InvoiceItem, Long, Short) line: 1
>         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> not available [native method]
>         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         StatsInterceptor.record(InvocationContext, Method) line: 176
>         StatsInterceptor.invoke(InvocationContext) line: 95
>         GeneratedMethodAccessor86.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         CdiInterceptor.invoke(InvocationContext) line: 129
>         CdiInterceptor.access$000(CdiInterceptor, InvocationContext) line:
> 45
>         CdiInterceptor$1.call() line: 66
>         CdiInterceptor.aroundInvoke(InvocationContext) line: 72
>         GeneratedMethodAccessor85.invoke(Object, Object[]) line: not
> available
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>
>
> ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke()
> line: 181
>         ReflectionInvocationContext.proceed() line: 163
>         InterceptorStack.invoke(Object...) line: 138
>         StatelessContainer._invoke(Method, Method, Object[], Instance,
> ThreadContext, InterfaceType) line: 226
>         StatelessContainer.invoke(Object, InterfaceType, Class, Method,
> Object[], Object) line: 178
>
>
> StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>,
> Method, Object[], Object) line: 260
>  StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>,
> Method, Object[], Object) line: 240
>         StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object,
> Class, Method, Object[]) line: 91
>         StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object,
> Method, Object[]) line: 284
>         $Proxy97.saveInvoiceItem(UserContainer, InvoiceItem, Long, Short)
> line: not available
>         InvoiceServiceImplTest.testSaveInvoiceItemNoAmount() line: 882
>         NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line:
> not available [native method]
>         NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>         DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>         Method.invoke(Object, Object...) line: 597
>         FrameworkMethod$1.runReflectiveCall() line: 44
>         FrameworkMethod$1(ReflectiveCallable).run() line: 15
>         FrameworkMethod.invokeExplosively(Object, Object...) line: 41
>         InvokeMethod.evaluate() line: 20
>         RunBefores.evaluate() line: 28
>         RunBeforeTestMethodCallbacks.evaluate() line: 74
>         RunAfters.evaluate() line: 31
>         RunAfterTestMethodCallbacks.evaluate() line: 82
>         SpringRepeat.evaluate() line: 72
>         SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier)
> line: 231
>         SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object,
> RunNotifier) line: 49
>         ParentRunner$3.run() line: 193
>         ParentRunner$1.schedule(Runnable) line: 52
>         SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier)
> line: 191
>         ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42
>         ParentRunner$2.evaluate() line: 184
>         RunBeforeTestClassCallbacks.evaluate() line: 61
>         RunAfterTestClassCallbacks.evaluate() line: 70
>         SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line:
> 236
>         SpringJUnit4ClassRunner.run(RunNotifier) line: 174
>         JUnit4TestClassReference(JUnit4TestReference).run(TestExecution)
> line: 50
>         TestExecution.run(ITestReference[]) line: 38
>         RemoteTestRunner.runTests(String[], String, TestExecution) line:
> 467
>         RemoteTestRunner.runTests(TestExecution) line: 683
>         RemoteTestRunner.run() line: 390
>         RemoteTestRunner.main(String[]) line: 197
>
>
>
>
> Von:
> Romain Manni-Bucau <rm...@gmail.com>
> An:
> users@openejb.apache.org
> Datum:
> 16.07.2012 17:03
> Betreff:
> Re: Unit tests hanging with openejb+dbunit+spring
>
>
>
> Hi,
>
> Any luck to get a thread stack when it hangs?
>
> - Romain
> Le 16 juil. 2012 16:23, <Kl...@ethalon.de> a écrit :
>
> > Hi OpenEJB experts
> > We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works pretty
> > well in most cases so far. But with some tests we run into a strange
> > problem:
> > If the test class has more than a certain number of test methods (e.g.
> 20
> > methods), the test simply hangs forever. It does not fail, it just hangs
> > and this is really bad for our build server. If we comment out one
> method,
> > the test runs fine. Our current workaround is to split up the test class
> > in multiple classes and then all test methods work fine, but this is
> kind
> > of a stupid fix.
> >
> > Does anybody ever encountered this behavior? Any ideas to fix this?
> >
> > Thanks
> > Klaus
> >
> >
> >
> >
>
>
>
>
>

Antwort: Re: Unit tests hanging with openejb+dbunit+spring

Posted by Kl...@ethalon.de.
Hi Romain
yes, see stack trace of the hanging thread below. After some more 
investigation it looks like it's hanging while trying to get database 
connections from the connection pool. Seems that connectins are not 
properly freed and returned to the pool? 

Any help is appreciated.
Klaus

Thread [main] (Suspended) 
        waiting for: GenericObjectPool$Latch  (id=146) 
        Object.wait(long) line: not available [native method] 
        GenericObjectPool$Latch(Object).wait() line: 485 [local variables 
unavailable] 
        GenericObjectPool.borrowObject() line: 1115 
        ManagedConnection.updateTransactionStatus() line: 117 
        ManagedConnection.<init>(ObjectPool, TransactionRegistry, boolean) 
line: 55 
        ManagedDataSource.getConnection() line: 77 
        BasicManagedDataSource(BasicDataSource).getConnection() line: 1044 

        DecoratingDataSource(DelegatingDataSource).getConnection() line: 
110 
        DecoratingDataSource.getConnection() line: 87 
        JDBCStoreManager.connectInternal() line: 960 
        JDBCStoreManager.connect(boolean) line: 945 
        JDBCStoreManager.getConnection() line: 240 
        FinderQueryImpl.execute(OpenJPAStateManager, StoreManager, 
FetchConfiguration) line: 139 
        JDBCStoreManager.getInitializeStateResult(OpenJPAStateManager, 
ClassMapping, JDBCFetchConfiguration, int) line: 537 
        JDBCStoreManager.initializeState(OpenJPAStateManager, PCState, 
JDBCFetchConfiguration, ConnectionInfo) line: 349 
        JDBCStoreManager.initialize(OpenJPAStateManager, PCState, 
FetchConfiguration, Object) line: 304 
 ROPStoreManager(DelegatingStoreManager).initialize(OpenJPAStateManager, 
PCState, FetchConfiguration, Object) line: 112 
        ROPStoreManager.initialize(OpenJPAStateManager, PCState, 
FetchConfiguration, Object) line: 57 
        BrokerImpl.initialize(StateManagerImpl, boolean, 
FetchConfiguration, Object) line: 1036 
        BrokerImpl.find(Object, FetchConfiguration, BitSet, Object, int, 
FindCallbacks) line: 994 
        BrokerImpl.find(Object, boolean, FindCallbacks) line: 911 
        DelegatingBroker.find(Object, boolean, FindCallbacks) line: 231 
        EntityManagerImpl.find(Class<T>, Object) line: 487 
        JtaEntityManager.find(Class<T>, Object) line: 157 
        MmData(BasicDataService).findById(Class<T>, U) line: 96 
        GeneratedMethodAccessor208.invoke(Object, Object[]) line: not 
available 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        StatsInterceptor.record(InvocationContext, Method) line: 176 
        StatsInterceptor.invoke(InvocationContext) line: 95 
        GeneratedMethodAccessor86.invoke(Object, Object[]) line: not 
available 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        CdiInterceptor.invoke(InvocationContext) line: 129 
        CdiInterceptor.access$000(CdiInterceptor, InvocationContext) line: 
45 
        CdiInterceptor$1.call() line: 66 
        CdiInterceptor.aroundInvoke(InvocationContext) line: 72 
        GeneratedMethodAccessor85.invoke(Object, Object[]) line: not 
available 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        InterceptorStack.invoke(Object...) line: 138 
        StatelessContainer._invoke(Method, Method, Object[], Instance, 
ThreadContext, InterfaceType) line: 226 
        StatelessContainer.invoke(Object, InterfaceType, Class, Method, 
Object[], Object) line: 178 
 
StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>, 
Method, Object[], Object) line: 260 
 StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>, 
Method, Object[], Object) line: 240 
        StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object, 
Class, Method, Object[]) line: 91 
        StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object, 
Method, Object[]) line: 284 
        $Proxy98.findById(Class, Object) line: not available 
        InvoiceServiceLoadHelper.loadInvoiceHeaderEntity(Long, 
InventoryManagementContainer) line: 217 
        InvoiceServiceImpl.saveInvoiceItem(UserContainer, InvoiceItem, 
Long, Short, InvoiceItemResponse) line: 381 
 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody46(InventoryManagementLogicEJB, 
UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 234 
 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody47$advice(InventoryManagementLogicEJB, 
UserContainer, InvoiceItem, Long, Short, JoinPoint, LogicServiceAspect, 
AroundClosure, JoinPoint$StaticPart, JoinPoint) line: 117 
 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody48(InventoryManagementLogicEJB, 
UserContainer, InvoiceItem, Long, Short, JoinPoint) line: 1 
 
InventoryManagementLogicEJB.saveInvoiceItem_aroundBody49$advice(InventoryManagementLogicEJB, 
UserContainer, InvoiceItem, Long, Short, JoinPoint, GuardAspect, 
AroundClosure, JoinPoint) line: 135 
        InventoryManagementLogicEJB.saveInvoiceItem(UserContainer, 
InvoiceItem, Long, Short) line: 1 
        NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: 
not available [native method] 
        NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$BeanInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        StatsInterceptor.record(InvocationContext, Method) line: 176 
        StatsInterceptor.invoke(InvocationContext) line: 95 
        GeneratedMethodAccessor86.invoke(Object, Object[]) line: not 
available 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        CdiInterceptor.invoke(InvocationContext) line: 129 
        CdiInterceptor.access$000(CdiInterceptor, InvocationContext) line: 
45 
        CdiInterceptor$1.call() line: 66 
        CdiInterceptor.aroundInvoke(InvocationContext) line: 72 
        GeneratedMethodAccessor85.invoke(Object, Object[]) line: not 
available 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
 
ReflectionInvocationContext$InterceptorInvocation(ReflectionInvocationContext$Invocation).invoke() 
line: 181 
        ReflectionInvocationContext.proceed() line: 163 
        InterceptorStack.invoke(Object...) line: 138 
        StatelessContainer._invoke(Method, Method, Object[], Instance, 
ThreadContext, InterfaceType) line: 226 
        StatelessContainer.invoke(Object, InterfaceType, Class, Method, 
Object[], Object) line: 178 
 
StatelessEjbObjectHandler(EjbObjectProxyHandler).synchronizedBusinessMethod(Class<?>, 
Method, Object[], Object) line: 260 
 StatelessEjbObjectHandler(EjbObjectProxyHandler).businessMethod(Class<?>, 
Method, Object[], Object) line: 240 
        StatelessEjbObjectHandler(EjbObjectProxyHandler)._invoke(Object, 
Class, Method, Object[]) line: 91 
        StatelessEjbObjectHandler(BaseEjbProxyHandler).invoke(Object, 
Method, Object[]) line: 284 
        $Proxy97.saveInvoiceItem(UserContainer, InvoiceItem, Long, Short) 
line: not available 
        InvoiceServiceImplTest.testSaveInvoiceItemNoAmount() line: 882 
        NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: 
not available [native method] 
        NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 
        DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
        Method.invoke(Object, Object...) line: 597 
        FrameworkMethod$1.runReflectiveCall() line: 44 
        FrameworkMethod$1(ReflectiveCallable).run() line: 15 
        FrameworkMethod.invokeExplosively(Object, Object...) line: 41 
        InvokeMethod.evaluate() line: 20 
        RunBefores.evaluate() line: 28 
        RunBeforeTestMethodCallbacks.evaluate() line: 74 
        RunAfters.evaluate() line: 31 
        RunAfterTestMethodCallbacks.evaluate() line: 82 
        SpringRepeat.evaluate() line: 72 
        SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) 
line: 231 
        SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object, 
RunNotifier) line: 49 
        ParentRunner$3.run() line: 193 
        ParentRunner$1.schedule(Runnable) line: 52 
        SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier) 
line: 191 
        ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42 
        ParentRunner$2.evaluate() line: 184 
        RunBeforeTestClassCallbacks.evaluate() line: 61 
        RunAfterTestClassCallbacks.evaluate() line: 70 
        SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line: 
236 
        SpringJUnit4ClassRunner.run(RunNotifier) line: 174 
        JUnit4TestClassReference(JUnit4TestReference).run(TestExecution) 
line: 50 
        TestExecution.run(ITestReference[]) line: 38 
        RemoteTestRunner.runTests(String[], String, TestExecution) line: 
467 
        RemoteTestRunner.runTests(TestExecution) line: 683 
        RemoteTestRunner.run() line: 390 
        RemoteTestRunner.main(String[]) line: 197 




Von:
Romain Manni-Bucau <rm...@gmail.com>
An:
users@openejb.apache.org
Datum:
16.07.2012 17:03
Betreff:
Re: Unit tests hanging with openejb+dbunit+spring



Hi,

Any luck to get a thread stack when it hangs?

- Romain
Le 16 juil. 2012 16:23, <Kl...@ethalon.de> a écrit :

> Hi OpenEJB experts
> We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works pretty
> well in most cases so far. But with some tests we run into a strange
> problem:
> If the test class has more than a certain number of test methods (e.g. 
20
> methods), the test simply hangs forever. It does not fail, it just hangs
> and this is really bad for our build server. If we comment out one 
method,
> the test runs fine. Our current workaround is to split up the test class
> in multiple classes and then all test methods work fine, but this is 
kind
> of a stupid fix.
>
> Does anybody ever encountered this behavior? Any ideas to fix this?
>
> Thanks
> Klaus
>
>
>
>





Re: Unit tests hanging with openejb+dbunit+spring

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi,

Any luck to get a thread stack when it hangs?

- Romain
Le 16 juil. 2012 16:23, <Kl...@ethalon.de> a écrit :

> Hi OpenEJB experts
> We use openejb4 + DbUnit + Spring for unittesting our EJBs. Works pretty
> well in most cases so far. But with some tests we run into a strange
> problem:
> If the test class has more than a certain number of test methods (e.g. 20
> methods), the test simply hangs forever. It does not fail, it just hangs
> and this is really bad for our build server. If we comment out one method,
> the test runs fine. Our current workaround is to split up the test class
> in multiple classes and then all test methods work fine, but this is kind
> of a stupid fix.
>
> Does anybody ever encountered this behavior? Any ideas to fix this?
>
> Thanks
> Klaus
>
>
>
>