|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
Running groovy webtests from Maven seems to hang at wt.htmlReportsI have a Maven
project which features a handful of Groovy WebtestCases that I wrote (each
extends com.canoo.webtest.WebtestCase). I am running these tests during the
integration-test phase (I've bound an execution of failsafe test runner to the
integration-test phase, and the groovy classes are compiled with the
gmaven-plugin).
After the tests
(which fail, btw) are run, the wt.htmlReports step seems to hang forever (this
is on a Windows XP machine):
Tests in
error:
testLoginSuccess(com.blah.LoginTest) testHomePage(com.blah.HomePageTest) Tests run:
2, Failures: 0, Errors: 2, Skipped: 0
wt.htmlReports: [mkdir] Created dir: C:\Documents and Settings\...\target\test-classes\webtest-results\resources [copy] Copying 20 files to C:\Documents and Settings\...\target\test-classes\webtest-results\resources [xslt] Transforming into C:\Documents and Settings\...\target\test-classes\webtest-results [xslt] Transforming into C:\Documents and Settings\...\target\test-classes\webtest-results ("..." is
not the real path)
Taking a
look at the process in Process Explorer, the process seems to keep a file
handle open to target\test-classes\webtest-resources\tools\spinner.gif. If I
kill the Maven process, then any subsequent attempts to clean the project result
in an error that this file is still locked.
Looking
at the process in Visual VM, I see a thread related to groovy/WebTestMonitorImpl
which seems to be dead-locked waiting for a
java.awt.EventQueue$1AWTInvocationLock:
"Thread-3" prio=6 tid=0x034fd400 nid=0x1604 in Object.wait()
[0x0409d000..0x0409fc94]
java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.lang.Object.wait(Object.java:485) at java.awt.EventQueue.invokeAndWait(EventQueue.java:992) - locked <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.Window.doDispose(Window.java:1029) at java.awt.Window.dispose(Window.java:972) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121) at WebTestMonitorImpl.shutdown(WebTestMonitor.groovy:143) at WebTestMonitorImpl$shutdown.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) ...
I've
attached the complete thread dump.
Is it
possible there is some sort of deadlock going on while copying the resources to
the target directory? Has anyone seen this before?
Relevant
version info:
Apache Maven 2.2.1 (r801777; 2009-08-06
15:16:01-0400)
Java version: 1.6.0_13 Java home: C:\Program Files\Java\jdk1.6.0_13\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows" com.canoo.webtest:webtest:3.1-SNAPSHOT
Thanks,
Matt
Brown 2009-09-15 12:49:11 Full thread dump Java HotSpot(TM) Client VM (11.3-b02 mixed mode, sharing): "JMX server connection timeout 20" daemon prio=6 tid=0x03561400 nid=0x1620 in Object.wait() [0x0423f000..0x0423fd94] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x239d6d90> (a [I) at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150) - locked <0x239d6d90> (a [I) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "RMI Scheduler(0)" daemon prio=6 tid=0x03511800 nid=0x1a60 waiting on condition [0x041ef000..0x041efa14] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x239d6e18> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963) at java.util.concurrent.DelayQueue.take(DelayQueue.java:164) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:583) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:576) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "RMI TCP Connection(2)-10.1.80.78" daemon prio=6 tid=0x0339c800 nid=0xacc runnable [0x0402f000..0x0402fa94] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:237) - locked <0x22ae0340> (a java.io.BufferedInputStream) at java.io.FilterInputStream.read(FilterInputStream.java:66) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - <0x239de568> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) "RMI TCP Accept-0" daemon prio=6 tid=0x0351f800 nid=0x1a34 runnable [0x03fdf000..0x03fdfb14] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) - locked <0x239d7338> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "Thread-3" prio=6 tid=0x034fd400 nid=0x1604 in Object.wait() [0x0409d000..0x0409fc94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.lang.Object.wait(Object.java:485) at java.awt.EventQueue.invokeAndWait(EventQueue.java:992) - locked <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.Window.doDispose(Window.java:1029) at java.awt.Window.dispose(Window.java:972) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121) at WebTestMonitorImpl.shutdown(WebTestMonitor.groovy:143) at WebTestMonitorImpl$shutdown.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:83) at embedded_script_in_C__Documents_and_Settings_matt_dot_brown_workspace_Quicksilver_Sprint_5_target_test_classes_webtest_resources_webtest_dot_xml.run(embedded_script_in_C__Documents_and_Settings_matt_dot_brown_workspace_Quicksilver_Sprint_5_target_test_classes_webtest_resources_webtest_dot_xml:1) at org.codehaus.groovy.ant.Groovy.parseAndRunScript(Groovy.java:425) at org.codehaus.groovy.ant.Groovy.execGroovy(Groovy.java:404) at org.codehaus.groovy.ant.Groovy.execute(Groovy.java:279) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329) at org.apache.tools.ant.Project.executeTarget(Project.java:1298) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at com.canoo.webtest.WebtestCase.doAfterTestsWork(WebtestCase.groovy:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:361) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:147) at com.canoo.webtest.WebtestCase$_getOwnerProject_closure2.doCall(WebtestCase.groovy:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151) at com.canoo.webtest.WebtestCase$_getOwnerProject_closure2.doCall(WebtestCase.groovy) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:880) at groovy.lang.Closure.call(Closure.java:279) at groovy.lang.Closure.call(Closure.java:274) at groovy.lang.Closure.run(Closure.java:355) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "AWT-EventQueue-0" prio=6 tid=0x03449800 nid=0x15ec runnable [0x03eff000..0x03effd94] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WInputMethod.getNativeLocale(Native Method) at sun.awt.windows.WInputMethod.getLocale(WInputMethod.java:167) at sun.awt.windows.WInputMethod.deactivate(WInputMethod.java:308) at sun.awt.im.InputContext.deactivateInputMethod(InputContext.java:472) at sun.awt.im.InputContext.focusLost(InputContext.java:438) - locked <0x23876660> (a sun.awt.im.InputMethodContext) - locked <0x23173720> (a java.awt.Component$AWTTreeLock) at sun.awt.im.InputContext.dispatchEvent(InputContext.java:231) at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:180) at java.awt.Component.dispatchEventImpl(Component.java:4517) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:562) at java.awt.Component.dispatchEventImpl(Component.java:4455) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Locked ownable synchronizers: - None "Image Animator 3" daemon prio=4 tid=0x0358c400 nid=0x9e4 runnable [0x03eaf000..0x03eafa14] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WFramePeer.getState(Native Method) at java.awt.Frame.getExtendedState(Frame.java:745) - locked <0x236dce08> (a javax.swing.JFrame) at javax.swing.RepaintManager.addDirtyRegion0(RepaintManager.java:419) at javax.swing.RepaintManager.addDirtyRegion(RepaintManager.java:465) at javax.swing.JComponent.repaint(JComponent.java:4732) at java.awt.Component.imageUpdate(Component.java:3250) at javax.swing.JLabel.imageUpdate(JLabel.java:881) at sun.awt.image.ImageWatched$WeakLink.newInfo(ImageWatched.java:114) at sun.awt.image.ImageWatched.newInfo(ImageWatched.java:151) at sun.awt.image.ImageRepresentation.imageComplete(ImageRepresentation.java:649) at sun.awt.image.ImageDecoder.imageComplete(ImageDecoder.java:135) at sun.awt.image.GifFrame.dispose(GifImageDecoder.java:645) at sun.awt.image.GifImageDecoder.readImage(GifImageDecoder.java:441) at sun.awt.image.GifImageDecoder.produceImage(GifImageDecoder.java:195) at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:246) at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172) at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136) Locked ownable synchronizers: - None "AWT-Shutdown" prio=6 tid=0x035e9400 nid=0x1b88 in Object.wait() [0x03dcf000..0x03dcfb14] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x231c75f8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259) - locked <0x231c75f8> (a java.lang.Object) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "Java2D Disposer" daemon prio=10 tid=0x03437800 nid=0x17e0 in Object.wait() [0x03d7f000..0x03d7fb94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x231c7688> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x231c7688> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) at sun.java2d.Disposer.run(Disposer.java:125) at java.lang.Thread.run(Thread.java:619) Locked ownable synchronizers: - None "Low Memory Detector" daemon prio=6 tid=0x02b81800 nid=0x14e0 runnable [0x00000000..0x00000000] java.lang.Thread.State: RUNNABLE Locked ownable synchronizers: - None "CompilerThread0" daemon prio=10 tid=0x02b7bc00 nid=0x8bc waiting on condition [0x00000000..0x02e2f9bc] java.lang.Thread.State: RUNNABLE Locked ownable synchronizers: - None "Attach Listener" daemon prio=10 tid=0x02b7a400 nid=0x14e8 runnable [0x00000000..0x02ddfd40] java.lang.Thread.State: RUNNABLE Locked ownable synchronizers: - None "Signal Dispatcher" daemon prio=10 tid=0x02b79000 nid=0x1f80 runnable [0x00000000..0x00000000] java.lang.Thread.State: RUNNABLE Locked ownable synchronizers: - None "Finalizer" daemon prio=8 tid=0x02b70c00 nid=0x1948 in Object.wait() [0x02d3f000..0x02d3fa94] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x22e86410> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x22e86410> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) Locked ownable synchronizers: - None "Reference Handler" daemon prio=10 tid=0x02b6f400 nid=0x18bc in Object.wait() [0x02cef000..0x02cefb14] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x22e86498> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x22e86498> (a java.lang.ref.Reference$Lock) Locked ownable synchronizers: - None "main" prio=6 tid=0x003b6c00 nid=0x1ed0 in Object.wait() [0x009df000..0x009dfe5c] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x238da438> (a java.lang.Thread) at java.lang.Thread.join(Thread.java:1143) - locked <0x238da438> (a java.lang.Thread) at java.lang.Thread.join(Thread.java:1196) at java.lang.ApplicationShutdownHooks.run(ApplicationShutdownHooks.java:79) at java.lang.Shutdown.runHooks(Shutdown.java:89) at java.lang.Shutdown.sequence(Shutdown.java:133) at java.lang.Shutdown.exit(Shutdown.java:178) - locked <0x2b7969d0> (a java.lang.Class for java.lang.Shutdown) at java.lang.Runtime.exit(Runtime.java:90) at java.lang.System.exit(System.java:906) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1015) Locked ownable synchronizers: - None "VM Thread" prio=10 tid=0x02b6dc00 nid=0x80c runnable "VM Periodic Task Thread" prio=10 tid=0x02b8c000 nid=0x170 waiting on condition JNI global references: 1085 |
|
|
RE: Running groovy webtests from Maven seems to hang at wt.htmlReportsAn addendum: this deadlock behavior does not seem to appear if
the property -Dwt.headless is set. From: webtest-admin@... [mailto:webtest-admin@...] On Behalf Of Matt Brown Sent: Tuesday, September 15, 2009 1:02 PM To: webtest@... Subject: [Webtest] Running groovy webtests from Maven seems to hang at wt.htmlReports I have a Maven
project which features a handful of Groovy WebtestCases that I wrote (each
extends com.canoo.webtest.WebtestCase). I am running these tests during the
integration-test phase (I've bound an execution of failsafe test runner to the
integration-test phase, and the groovy classes are compiled with the
gmaven-plugin).
After the tests
(which fail, btw) are run, the wt.htmlReports step seems to hang forever (this
is on a Windows XP machine):
Tests in
error:
testLoginSuccess(com.blah.LoginTest) testHomePage(com.blah.HomePageTest) Tests run:
2, Failures: 0, Errors: 2, Skipped: 0
wt.htmlReports: [mkdir] Created dir: C:\Documents and Settings\...\target\test-classes\webtest-results\resources [copy] Copying 20 files to C:\Documents and Settings\...\target\test-classes\webtest-results\resources [xslt] Transforming into C:\Documents and Settings\...\target\test-classes\webtest-results [xslt] Transforming into C:\Documents and Settings\...\target\test-classes\webtest-results ("..." is
not the real path)
Taking a
look at the process in Process Explorer, the process seems to keep a file
handle open to target\test-classes\webtest-resources\tools\spinner.gif. If I
kill the Maven process, then any subsequent attempts to clean the project result
in an error that this file is still locked.
Looking
at the process in Visual VM, I see a thread related to groovy/WebTestMonitorImpl
which seems to be dead-locked waiting for a
java.awt.EventQueue$1AWTInvocationLock:
"Thread-3" prio=6 tid=0x034fd400 nid=0x1604 in Object.wait()
[0x0409d000..0x0409fc94]
java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.lang.Object.wait(Object.java:485) at java.awt.EventQueue.invokeAndWait(EventQueue.java:992) - locked <0x239b7518> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.Window.doDispose(Window.java:1029) at java.awt.Window.dispose(Window.java:972) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121) at WebTestMonitorImpl.shutdown(WebTestMonitor.groovy:143) at WebTestMonitorImpl$shutdown.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40) ...
I've
attached the complete thread dump.
Is it
possible there is some sort of deadlock going on while copying the resources to
the target directory? Has anyone seen this before?
Relevant
version info:
Apache Maven 2.2.1 (r801777; 2009-08-06
15:16:01-0400)
Java version: 1.6.0_13 Java home: C:\Program Files\Java\jdk1.6.0_13\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows" com.canoo.webtest:webtest:3.1-SNAPSHOT
Thanks,
Matt
Brown |
| Free embeddable forum powered by Nabble | Forum Help |