How to prevent WSDL refresh in testsuite? - web-services

In SoapUI 5.3.0 I created a testcase for a SOAP webservice. There are 3 SOAP requests in the testcase.
I noticed that when executing the testcase, the WSDL is reloaded before the first and third SOAP request, but not for the second one (or maybe even then, but is too quick to notice. Is there some log for this?).
Why does SoapUI reload the WSDL in those cases? Is it some setting? I checked the settings and could not find anything related. My settings are mostly default.
I do not want the WSDL to be reloaded each time, as I consider it to be part of the test and should stay the same, unless I change it willingly.
Here is an image of what happens, taken right after starting the testcase:

Related

Test auto increment function of web service with simultaneous users

I have a web service that does a simple task of 'auto-incrementing' a simple field.I test it using SoapUI. That is, whenever I run SoapUI, the response would be a value that is one plus it's previous value. Now, the catch is, I want to test simultaneous users running the same web service. Meaning, if they all access the web service at once, the web service will respond with the correct incremented value.
For instance, I have 3 users who accessed the service at the same time. I am expecting that the response (integer value) they would get will not be the same with each other. It should be incremental. That's what I want to test.
I'm thinking of maybe incorporating JMeter and SoapUI, but I'm not sure if that's even possible. Do you have any suggestions on how I can handle this?
SoapUI offers some limited load testing capabilities so if you think the load from one machine will be enough and you will be happy with the load test metrics which reflect only average/min/max response times and throughput - you can conduct your load test using SoapUI only.
If you decide to go for JMeter - be aware that you can migrate your test in at least 2 ways:
Record running SoapUI test scenario using JMeter's HTTP(S) Test Script Recorder
Taurus automation framework comes with SoapUI xml to JMeter jmx converter.
If you want to do it manually check out Building a SOAP WebService Test Plan JMeter User Manual chapter
In order to "tell" JMeter to execute HTTP Request samplers with the desired amount of virtual users at exactly the same moment add Synchronizing Timer as a child of the relevant HTTP Request sampler.

TomEE server is not passing web service request to the webmethod

I am new in the area of SOAP Based web services. I am using TomEE server. The server is a bit customized according to my organization's need.
Few days back, when I was trying to run the web services example from TomEE website, I was able to generate the wsdl and calling the web service by a client.
Now, when I need to use the customized version of TomEE plus (by the organization), I can see that the request does reach to the server and hence there is a log entry also but my #WebMethod is not getting executed.
Does any one has any idea about any configuration which can prevent the request from reaching to the webservice method? Is there any pointer around how can I debug further to reach out to the root cause of this issue?
Without further information about what is customized it's like fishing in the dark.
I would guess that perhaps the global web.xml or the server.xml of tomee server is changed so that some URI context mappings are not forwarded or ignored. But it's only a lucky tip.

What difference step is happening while importing WSDL via browser Vs SOAPUI

I have a well reported problem with a simple WS deployed in Glassfish 4.1 , where I get the WSDL in browser but cant import it in SOAP UI or Eclipse(Kepler) .
IWAB0135E An unexpected error has occurred.
WSDLException
WSDLException: faultCode=OTHER_ERROR:
this
My question is : What extra thing is happening while trying to access this location from SOAP UI / Eclipse WebService explorer Vs via browser ?
I would like to know what other areas I need to look at to trouble shoot this issue .
When loading a WSDL trough SOAP UI, it tries to parse it and does some validations of the WSDL in order to create a SOAP UI project and generate the empty requests for you. Eclipse also does these validations (On validate in the context menu, when a .WSDL is opened or when saving a .WSDL) - I've found them even more strict than the SOAP UI ones.
On the other hand, the browser doesn't do validation of the wsdl content, it just displays it as it is, and applies some default colours for rendering xml in order to make it more readable. But it would not complain if the wsdl is not formed correctly.

Automated testing of a SOAP Service

Before just answering: Use SoapUI. Please read the Question, because I tried SoapUI.
I have a lot big wsdl Files. Every Method works like this:
First do a synchronous Call:
Request: Please do foo and send Request to URI: XY
Response: Ok, your Job has UUID: abc
After the Job is done, my Sevice will respond to URI: XY, by sending only a request Message synchronously:
Request: Ok I finished your Job with the UUID: abc and the result is bar
We needed to use this behavior, because we have a pool where all answers will be stored and are identified by UUID.
Do you know a possibility to test such a SOAP Service?
I tried:
SOAP UI
BPEL Unit (I think it should be possible with BPEL Unit but I can't make it work properly)
Please don't recommend writing my own JAVA tests, because I have more than 100 methods to test.
Also the Tests need to be run and the results need to be analyzed automatically in a Test-suite, I can't do this for 100 Methods by hand everytime I change the code of the Web Service.
I'm one of the SoapUI Guys, so you'll probably HATE my answer...
But the solution is using SoapUI; more specifically using MockResponse TestSteps. SoapUI is NOT very strong when it comes to BPEL testing, but using MockResponse Steps you can fix it.
Look here: http://www.soapui.org/SOAP-and-WSDL/testing-asynchronous-services.html. Even though all calls are done synchronously, this can still be considered asynch testing since we have more than plain request/response.
I also know that Oracle has got a great write up on this.
What you need to do is to create a mock service that will receive the second call which signals that the job processing is done. This is can be done in SOAP UI, you can read about how to create a mock web-service here.
You can test Web Services by using Eclipse.
Just put the WSDL file on your project -> right click on the file -> web services -> test using web service explorer.
You will have an interface showing all your WSDL operations and fields which are needed.

Invalid WSDL request message (HTTP 405) on WSDL request (Glassfish v3)

I've a web service, which is basically a #Stateless EJB annotated with #WebService, and other JAX-WS related annotations. I can deploy this bean on my machine's glassfish instance, and see its WSDL through Glassfish's administrative GUI. I can also call its methods without any problems, from a SE client.
When I deploy this web service to a server instance in any other machine, I can no longer browse its WSDL through glassfish, and the client fails to connect to the server. The message displayed is:
Invalid WSDL request: http://ip:port/context/serviceEndpoint?wsdl
The HTTP error returned by Glassfish on such request is 405 (method not allowed).
I browsed around, and couldn't get anything directly related to glassfish v3. There are issues open on Glassfish's bugzilla for version 2, meaning they're old and have been labelled as CLOSED/FIXED already.
Anyone ran into this before? Any help or any clues about what could be happening here?
Thanks in advance!
For the sake of those who might come across this problem one day: I had OpenSSO on the target server. And by many obvious reasons, it was a classpath clashing problem that prevented the WSDL to be generated by glassfish.
Once OpenSSO has been removed of the equation, everything worked as it was supposed too. So, even if you're not an OpenSSO user, check your classpath for multiple Metro instances, or any other JAX related library that might be conflicting with glassfish's own on your domain.