Suds 4.1 Beta Assertion Failure

1

1stpoint

Hello group, I have been using Python suds to try to consume a web service. I am able to use tools like SOAPUI and it works but when I it in python I get Assertion Failure.

Here is my code

if __name__== '__main__':
from suds.client import Client
import logging
logging.basicConfig(filename="suds.log",level=logging.INFO)
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
obieeserver='http://hostname:port/analytics-ws/saw.dll/wsdl/v7'
rptRef='myReport'
paramRpt=''
client = Client(obieeserver)
sessionid = client.service['SAWSessionService'].logon('uid','pwd')
print 'sessionid=',sessionid

reportservice=client.service['ReportEditingService']
result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)

print 'result=',type(result)

Here is my output:

sessionid= fq3c0f0ec7hrql07fspk7fdu4esih16pp4eql9a
Traceback (most recent call last):
File "obieetest.py", line 90, in <module>
result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)
File "build\bdist.win32\egg\suds\client.py", line 542, in __call__
File "build\bdist.win32\egg\suds\client.py", line 602, in invoke
File "build\bdist.win32\egg\suds\client.py", line 651, in send
File "build\bdist.win32\egg\suds\client.py", line 688, in succeeded
File "build\bdist.win32\egg\suds\bindings\binding.py", line 151, in get_reply
File "build\bdist.win32\egg\suds\bindings\binding.py", line 182, in detect_fault
suds.WebFault: Server raised fault: 'Assertion failure: criteria at line 296 of /net/adcnas420/export/ifarm_base/ifarm_views/aime_bifndn_430300/bifndn/analytics_web/main/project/webformatengine/formatengine.cpp'
 
D

dieter

Hello group, I have been using Python suds to try to consume a web service. I am able to use tools like SOAPUI and it works but when I it in python I get Assertion Failure.
...
suds.WebFault: Server raised fault: 'Assertion failure: criteria at line 296 of /net/adcnas420/export/ifarm_base/ifarm_views/aime_bifndn_430300/bifndn/analytics_web/main/project/webformatengine/formatengine.cpp'

This is a message from the webserver. The "Assertion failure" happens
there (in the server) and not on the client side.

Usually, an "Assertion failure" is a programming error (of the component
which checks the assertion). However, in some cases, other components
(such as the client, in your case) might be directly responsible
or have at least triggered the problem.


I would approach as follows: Tell "suds" to log the outgoing messages;
lock at those messages whether they are correct. If they are,
contact the web service administrator and ask him for help.
 
1

1stpoint

It turns out I was passing the parameters incorrectly to the generateReportSQL method.

This is what I had:
result=reportservice.generateReportSQL(rptRef, paramRpt, sessionid)

This is what works:
result=XMLservice.generateReportSQL({'reportPath':rptRef},sessionid)

I have another issue. When I make the call to return data apparently the result set is too big for suds and I get a MemoryError.

Here is my code snippet:
print 'executing SQL Query:',len(logicalSQL)
executionOptions={'async':False,'maxRowsPerPage':50,'refresh':True,'presentationInfo':False,'type':'Q1'}
XMLservice=obiclient.service['XmlViewService']
result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)

When I run it I get:
executing SQL Query: 5968
Traceback (most recent call last):
File "C:\temp\obiee\obieetest.py", line 105, in <module>
result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)
File "build\bdist.win32\egg\suds\client.py", line 542, in __call__
File "build\bdist.win32\egg\suds\client.py", line 602, in invoke
File "build\bdist.win32\egg\suds\client.py", line 643, in send
File "build\bdist.win32\egg\suds\transport\https.py", line 64, in send
File "build\bdist.win32\egg\suds\transport\http.py", line 79, in send
File "C:\Python27\lib\socket.py", line 358, in read
buf.write(data)
MemoryError: out of memory
 
D

dieter

...
I have another issue. When I make the call to return data apparently the result set is too big for suds and I get a MemoryError.

Here is my code snippet:
print 'executing SQL Query:',len(logicalSQL)
executionOptions={'async':False,'maxRowsPerPage':50,'refresh':True,'presentationInfo':False,'type':'Q1'}
XMLservice=obiclient.service['XmlViewService']
result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)

When I run it I get:
executing SQL Query: 5968
Traceback (most recent call last):
File "C:\temp\obiee\obieetest.py", line 105, in <module>
result=XMLservice.executeSQLQuery(logicalSQL,'SAWRowsetData',executionOptions,sessionid)
File "build\bdist.win32\egg\suds\client.py", line 542, in __call__
File "build\bdist.win32\egg\suds\client.py", line 602, in invoke
File "build\bdist.win32\egg\suds\client.py", line 643, in send
File "build\bdist.win32\egg\suds\transport\https.py", line 64, in send
File "build\bdist.win32\egg\suds\transport\http.py", line 79, in send
File "C:\Python27\lib\socket.py", line 358, in read
buf.write(data)
MemoryError: out of memory

There is not much "suds" can do with regard to this. In principle,
it could write to a temporary file - but its purpose is to present
the webservice result as a collection of Python objects - and
they, too, require memory in the same order.

Thus, you have the following options:

* learn how to limit the amount of data, the webservice provides
* give your system (its processes) more memory
* do not use "suds" but process the incoming data incrementally
(avoiding the build of the intermediate collection of Python objects).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top