class HealthCheckArray { public: ns1__HealthCheck *__ptritem; int __size; };
// A normal return status .. returns a string. class ns1__StringReturnStatus { public: bool success; bool locked; ns1__stringArray infoStrings; std::string returnObject; };
// A more complex return status .. overrides returnObject to return a structure. class ns1__HealthCheckReturnStatus : public ns1__StringReturnStatus { public: struct _healthcheckreturnobject { enum ns1__DBStatus OwnDBStatus; enum ns1__BWIStatus OwnBWIStatus; HealthCheckArray PeerHealthCheck; } returnObject; };
Trying to optimize a wsdl file (generated for me by soapcpp2) by subclassing a return object. Works fine in gsoap, but soapui complains when I try to import the wsdl. Here's the relevant snips from the wsdl:
Fri Jul 25 14:43:12 EDT 2008:ERROR:An error occured [http://192.168.2.39/NetManagerServicesBinding.wsdl:0: error: cos-element-consistent: Type of 'returnObject' is inconsistent with another element with the same name in this content model.], see error log for details Fri Jul 25 14:43:12 EDT 2008:WARN:Error: http://192.168.2.39/NetManagerServicesBinding.wsdl:0: error: cos-element-consistent: Type of 'returnObject' is inconsistent with another element with the same name in this content model. Fri Jul 25 14:43:12 EDT 2008:ERROR:An error occured [com.eviware.soapui.impl.wsdl.support.xsd.SchemaException], see error log for details Fri Jul 25 14:43:12 EDT 2008:ERROR:Loading of definition failed for [http://192.168.2.39/NetManagerServicesBinding.wsdl]; com.eviware.soapui.impl.wsdl.support.xsd.SchemaException: Error loading schema types Fri Jul 25 14:43:12 EDT 2008:ERROR:An error occured [Error loading schema types], see error log for details Fri Jul 25 14:43:12 EDT 2008:ERROR:Error loading schema types from http://192.168.2.39/NetManagerServicesBinding.wsdl, see log for details
Its complaining about the redefinition of returnObject.
Using soapui pro 2.0.2 (due to problems with 2.0.3).
Yes, memory is still being slowly consumed. It's improved, in that I can now run an overnight test, but it's still consuming memory. We've not yet scaled up the test to really hammer our system... we still have much more to do, so this is a huge concern for us going forward.
This morning, the test was still running and memory usage was up to around 175MB (245MB allocated at some point between yesterday afternoon and this morning).
That does work to keep the test running. It's currently using around 150MB with 5000 nodes being created (down to around 100 MB in the infinite loop portion of the test).
Update: It's actually varying between loop iterations... some loops use less memory than others (each ramp is a llop iteratin, followed by a delay and "gototeststep" call). The last run (right-most ramp) used over 150MB RAM and bumped the allocation to over 170MB). Currently, it's nearly 4/5 through a loop iteration and it's using around 125MB.
What is the difference between the "Discard OK Results" setting in the testcase options dialog and the "Discard Removed" setting in the testcase log options dialog? As well, what is the "Follow" setting (testcase log options) for? I tried searching for the docs for this dialog but couldn't seem to find any.
I scaled back the test to 1000 nodes and changed the order of steps slightly (to create a objects which broadcast packets on the network AFTER the 1000 nodes are created, rather than before). The reordering means I have a second loop to create the packet generating objects rather than combineing that step in the first loop which sets up the parameters for those objects.
Regardless, the test is proceeding, however, it will fail... memory is still being consumes at a great rate. Check out these images. The first three are from the original test setup, the last is from the adjusted setup (where the packet generators are setup after the nodes are created).
The long rise in this next image indicates that the test is now in the add a group, add nodes to the group, send command to the group, delete the group loop.
Finally, the test exhausted the allocated memory and flatlined. The test still runs though tere are a lot of nullpointer exceptions and out of bounds errors in the console log. As well, the test step numbers appear to be decrementing when in a loop.. check out this pic to see what I mean:
I scaled back that test to 2000 nodes... same procedure as before.
First thing I noticed was this error in the console log, after which, things seemed to slow down dramatically:
Code:
15:21:09,421 INFO [WorkspaceImpl] Saved workspace to [C:\Documents and Settings \Jon\default-soapui-workspace.xml] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.BufferStrategyPaintManager.flushAccumulatedRegion(Unknown Source) at javax.swing.BufferStrategyPaintManager.endPaint(Unknown Source) at javax.swing.RepaintManager.endPaint(Unknown Source) at javax.swing.JComponent._paintImmediately(Unknown Source) at javax.swing.JComponent.paintImmediately(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow n Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
After that, it was working, but slowly and I could see the memory utilization steadily climb. I've got 2GB in the machine (500MB used by a vmware instance, leaving 1.5GB for WinXP). Last evening, soapUI ran out of memory and popped up a dialog asking me if I wanted to exit without saving. I don't know how many loop iterations it was able to complete before crashing (well, technically, it didn't actually "crash" - I was able to control the program and tell it to exit) - but it did stop the test with the out of memory error.
A screen dump from the console window:
Code:
23:11:51,890 ERROR [WsdlTestCaseRunner] Exception during TestCase Execution java.lang.OutOfMemoryError: Java heap space at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397) at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441) at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)
at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023 ) at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale. java:3248) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j ava:1082) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer. java:4957) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140 0) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444 ) at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69 5) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68 2) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType LoaderBase.java:208) at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580) at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java: 486) at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes ponse.getContentAsString(SinglePartHttpResponse.java:155) at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge tResponseContent(WsdlResponseMessageExchange.java:97) at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W sdlMessageExchange.java:50) at com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion.assertRes ponse(WsdlMessageAssertion.java:139) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.assertResponse (WsdlTestRequest.java:144) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.setResponse(Ws dlTestRequest.java:130) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.run(WsdlTe stRequestStep.java:298) at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.run(WsdlTest CaseRunner.java:185) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa ce at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397) at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441) at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)
at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023 ) at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale. java:3248) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j ava:1082) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer. java:4957) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140 0) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444 ) at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69 5) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68 2) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType LoaderBase.java:208) at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580) at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java: 486) at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes ponse.getContentAsString(SinglePartHttpResponse.java:155) at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge tResponseContent(WsdlResponseMessageExchange.java:97) at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W sdlMessageExchange.java:50) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getAssertionSt at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe stRequest.java:269) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws dlTestRequestStep.java:219) at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel lRenderer.getListCellRendererComponent(TestStepList.java:227) at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Sou rce) at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize(Unknown Source) at java.awt.BorderLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize(Unknown Source) Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397) at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441) at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)
at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023 ) at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale. java:3248) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j ava:1082) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer. java:4957) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140 0) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444 ) at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69 5) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68 2) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType LoaderBase.java:208) at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580) at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java: 486) at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes ponse.getContentAsString(SinglePartHttpResponse.java:155) at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge tResponseContent(WsdlResponseMessageExchange.java:97) at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W sdlMessageExchange.java:50) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getAssertionSt atus(WsdlTestRequest.java:229) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe stRequest.java:269) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws dlTestRequestStep.java:219) at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe stRequest.java:269) at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws dlTestRequestStep.java:219) at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel lRenderer.getListCellRendererComponent(TestStepList.java:227) at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Sou rce) at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize(Unknown Source) at java.awt.BorderLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize(Unknown Source) Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space at java.awt.image.DataBufferInt.<init>(Unknown Source) at java.awt.image.Raster.createPackedRaster(Unknown Source) at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknow n Source) at sun.awt.image.SunVolatileImage.getBackupImage(Unknown Source) at sun.awt.image.VolatileSurfaceManager.getBackupSurface(Unknown Source)
at sun.awt.image.VolatileSurfaceManager.initialize(Unknown Source) at sun.awt.image.SunVolatileImage.<init>(Unknown Source) at sun.awt.image.SunVolatileImage.<init>(Unknown Source) at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source) at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source) at javax.swing.RepaintManager.getVolatileOffscreenBuffer(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source) at javax.swing.RepaintManager.paint(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source) at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source) at sun.awt.SunGraphicsCallback.runComponents(Unknown Source) at java.awt.Container.paint(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow n Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space Exception occurred during event dispatching: java.lang.OutOfMemoryError: Java heap space
Going to scale back to < 1000 nodes and try again.
I've scaled up my test rig to add a base list of 10,000 objects. Then, I enter an infinite loop (with a 5s delay before repeating) which:
Deletes a group
Adds a new group
Adds all 10,000 previously created objects to the new group
Adds a config element to each of the 10,000 objects in the group (via a command sent to the group)
Delay 5s
Rinse and repeat until stopped by the operator
This ran for a short while last night before crashing:
Code:
17:42:24,771 INFO [SchemaUtils] Loading schema types from [http://192.168.2.39/ MyProjectServicesBinding.wsdl] 17:42:24,771 INFO [SchemaUtils] Getting schema http://192.168.2.39/MyProjectSe rvicesBinding.wsdl 17:42:29,177 INFO [HttpClientSupport$Helper] Initializing SSL 17:47:09,849 INFO [WsdlProject] Saved project [MyProject] to [C:\Documents an d Settings\Jon\My Documents\MyProject-soapui-project-idc.xml - 187303 bytes
17:47:09,849 INFO [WorkspaceImpl] Saved workspace to [C:\Documents and Settings \Jon\default-soapui-workspace.xml] 17:48:28,818 INFO [WsdlProject] Saved project [MyProject] to [C:\Documents an d Settings\Jon\My Documents\MyProject-soapui-project-idc.xml - 187303 bytes
17:48:28,818 INFO [WorkspaceImpl] Saved workspace to [C:\Documents and Settings \Jon\default-soapui-workspace.xml] Exception in thread "MemoryMonitor" java.lang.OutOfMemoryError: Java heap space at com.eviware.soapui.support.monitor.MonitorPanel$Surface.run(MonitorPa nel.java:203) at java.lang.Thread.run(Unknown Source) Exception in thread "Image Fetcher 3" java.lang.OutOfMemoryError: Java heap spac e at java.awt.image.RGBImageFilter.filterIndexColorModel(Unknown Source) at java.awt.image.RGBImageFilter.setColorModel(Unknown Source) at sun.awt.image.ImageDecoder.setColorModel(Unknown Source) at sun.awt.image.GifImageDecoder.readImage(Unknown Source) at sun.awt.image.GifImageDecoder.produceImage(Unknown Source) at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source) at sun.awt.image.ImageFetcher.fetchloop(Unknown Source) at sun.awt.image.ImageFetcher.run(Unknown Source) Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap spac e at sun.awt.image.GifImageDecoder.<init>(Unknown Source) at sun.awt.image.InputStreamImageSource.getDecoder(Unknown Source) at sun.awt.image.URLImageSource.getDecoder(Unknown Source) at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source) at sun.awt.image.ImageFetcher.fetchloop(Unknown Source) at sun.awt.image.ImageFetcher.run(Unknown Source) 23:02:41,520 ERROR [SoapUI] An error occured [Java heap space], see error log fo r details
That's a great idea, one which I'd thought of using at one point, but I couldn't figure out how to go back to a given step. The conditional goto uses xpath and the datasource loop requires a datasource to increment.
After your very help suggestions for datasource loops got things working for us, I did notice something else a bit strange. I put in some println statements and captured some sample output to show what I mean (observe the behaviour of "adjusted netPort" when it approaches xxx9):
adjusted netPort: 1077 raw netport: 1008 raw iterator: 7 adjusted netPort: 1078 raw netport: 1009 raw iterator: 7 adjusted netPort: 1079 raw netport: 1009 raw iterator: 8 adjusted netPort: 1089 raw netport: 1000 raw iterator: 8 adjusted netPort: 1080 raw netport: 1001 raw iterator: 8 adjusted netPort: 1081 raw netport: 1002 raw iterator: 8 adjusted netPort: 1082 raw netport: 1003 raw iterator: 8 adjusted netPort: 1083 raw netport: 1004 raw iterator: 8 adjusted netPort: 1084 raw netport: 1005 raw iterator: 8 adjusted netPort: 1085 raw netport: 1006 raw iterator: 8 adjusted netPort: 1086 raw netport: 1007 raw iterator: 8 adjusted netPort: 1087 raw netport: 1008 raw iterator: 8 adjusted netPort: 1088 raw netport: 1009 raw iterator: 8 adjusted netPort: 1089 raw netport: 1009 raw iterator: 9 adjusted netPort: 1099
The Net Port Datasource was "finish"ed before the iterator (my current loop count) was incremented, but it seems to take another loop step to actually complete the "finish" operation. I just figured out that I can work around this (in the simple case) by setting the outer loop's target to the inner loop's datasource loop testStep (although this won't help in the case where I need to reset the datasource before continuing on in the test case), but, does this strike you as a bit odd?
Trying to use a groovy datasource to generate some test values (to eliminate a spreadsheet containing just a column of numbers).
I need to iterate over that column, changing the values each time an outer loop increments.
What I have is this: a groovy datasource with a single property defined. NExt, I have this script which takes two TestCase properties as the base from which to compute the list of values:
Do you have any other thoughts on this? While it works using the teststep reference, it's annoying to have to change it if I change the order of test steps.