DrBlast
13 years agoNew Contributor
SoapUI hangs if assertion failed in TestCase TearDown Script
I've made a loop using Conditional goto with steps:
1. Request
2. Groovy script to set/update property variable
3. conditional goto.
and added an assert to TesCase TearDown Script:
And caught two bugs:
1. If loop ends, but assertion is failed, soapUI doesn't allow to run any other steps/scripts etc. All scripts are shown in grey color (all buttons, exept main menu, are disabled).
2. If script loops at about 3-4 times, then soapUI hangs with a deadlock (see logs). It's interesting that all loops didn't run and tearDown script should not be executed.
I've figured that I shouldn't have used 'assert' statement in teardown script and better move it to one of the test steps but I still think that SoapUI must not hang in this case.
1. Request
2. Groovy script to set/update property variable
3. conditional goto.
and added an assert to TesCase TearDown Script:
def tc = testRunner.testCase.getPropertyValue('status')
assert tc.contains('Done')
And caught two bugs:
1. If loop ends, but assertion is failed, soapUI doesn't allow to run any other steps/scripts etc. All scripts are shown in grey color (all buttons, exept main menu, are disabled).
2. If script loops at about 3-4 times, then soapUI hangs with a deadlock (see logs). It's interesting that all loops didn't run and tearDown script should not be executed.
I've figured that I shouldn't have used 'assert' statement in teardown script and better move it to one of the test steps but I still think that SoapUI must not hang in this case.
Name: Thread-14
State: BLOCKED on java.awt.Component$AWTTreeLock@1b2488d owned by: AWT-EventQueue-0
Total blocked: 188 Total waited: 236
Stack trace:
sun.awt.im.InputContext.focusLost(InputContext.java:450)
sun.awt.im.InputContext.removeNotify(InputContext.java:624)
- locked sun.awt.im.InputMethodContext@1b9b751
java.awt.Component.enableInputMethods(Component.java:1582)
javax.swing.text.JTextComponent.setEditable(JTextComponent.java:1805)
com.eviware.soapui.support.editor.views.xml.source.XmlSourceEditorView.setEditable(XmlSourceEditorView.java:697)
com.eviware.soapui.support.editor.Editor.setEditable(Editor.java:197)
com.eviware.soapui.impl.support.panels.AbstractHttpRequestDesktopPanel.setEnabled(AbstractHttpRequestDesktopPanel.java:332)
com.eviware.soapui.impl.wsdl.panels.request.AbstractWsdlRequestDesktopPanel.setEnabled(AbstractWsdlRequestDesktopPanel.java:111)
com.eviware.soapui.impl.wsdl.panels.teststeps.WsdlTestRequestDesktopPanel.setEnabled(WsdlTestRequestDesktopPanel.java:188)
com.eviware.soapui.impl.support.panels.AbstractHttpRequestDesktopPanel.beforeSubmit(AbstractHttpRequestDesktopPanel.java:592)
com.eviware.soapui.impl.wsdl.panels.request.AbstractWsdlRequestDesktopPanel.beforeSubmit(AbstractWsdlRequestDesktopPanel.java:154)
com.eviware.soapui.impl.wsdl.panels.teststeps.WsdlTestRequestDesktopPanel.beforeSubmit(WsdlTestRequestDesktopPanel.java:228)
com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:114)
com.eviware.soapui.impl.wsdl.WsdlSubmit.submitRequest(WsdlSubmit.java:76)
com.eviware.soapui.impl.wsdl.WsdlRequest.submit(WsdlRequest.java:238)
com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.run(WsdlTestRequestStep.java:417)
com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:238)
com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runCurrentTestStep(WsdlTestCaseRunner.java:48)
com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:147)
com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:42)
com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:135)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
java.util.concurrent.FutureTask.run(FutureTask.java:166)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
Name: AWT-EventQueue-0
State: BLOCKED on sun.awt.im.InputMethodContext@1b9b751 owned by: Thread-14
Total blocked: 3 306 Total waited: 5 939
Stack trace:
sun.awt.im.InputContext.removeNotify(InputContext.java:610)
java.awt.Component.removeNotify(Component.java:6988)
- locked java.awt.Component$AWTTreeLock@1b2488d
java.awt.Container.removeNotify(Container.java:2816)
- locked java.awt.Component$AWTTreeLock@1b2488d
javax.swing.JComponent.removeNotify(JComponent.java:4761)
java.awt.Container.removeAll(Container.java:1290)
javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:325)
- locked java.awt.Component$AWTTreeLock@1b2488d
javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:240)
javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
javax.swing.JComponent.paintComponent(JComponent.java:778)
javax.swing.JComponent.paint(JComponent.java:1054)
javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked java.awt.Component$AWTTreeLock@1b2488d
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JViewport.paint(JViewport.java:725)
javax.swing.JComponent.paintChildren(JComponent.java:887)
- locked java.awt.Component$AWTTreeLock@1b2488d
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
javax.swing.RepaintManager.paint(RepaintManager.java:1206)
javax.swing.JComponent._paintImmediately(JComponent.java:5169)
javax.swing.JComponent.paintImmediately(JComponent.java:4980)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
javax.swing.RepaintManager.access$700(RepaintManager.java:59)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
java.awt.EventQueue.access$000(EventQueue.java:101)
java.awt.EventQueue$3.run(EventQueue.java:666)
java.awt.EventQueue$3.run(EventQueue.java:664)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
java.awt.EventDispatchThread.run(EventDispatchThread.java:90)