cancel
Showing results for 
Search instead for 
Did you mean: 

Can we combine multiple soap request in single WSDL

SOLVED
Highlighted
Occasional Contributor

Can we combine multiple soap request in single WSDL

We've single WSDL with one operation, however we want to hit multiple SOAP over JMS steps and TIBCO steps,

in single suite.

 

Is this possible?

 

Also

Will common JMS headers/properties work for both.?

 

@commune  @admin

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Community Hero

Re: Can we combine multiple soap request in single WSDL

Here are the assumptions I have based on your reply. Correct / Add more details otherwise.

 

  • As you mentioned, you got one wsdl with an operation. So you want to test this single operation using both http, jms.
  • I believe that you need to include JMS headers like JMSReplyTo or correlationId etc(or something else) when it is jms communication, and these aren't needed when it is http transport.
  • Considering first point, the soap request is same in both the transports.
  • You mentioned TIBCO earlier without much details. Hoping that you mean TIBCO EMS as jms is pointed.
  1. Yes, it is possible to achieve this. SoapUI uses HermesJMS to connect to different JMS vendors. So, you need to configure it so that it can connect to targetted JMS server.
  2. In the service interface, add the endpoint, say, ${#Project#SERVICE1_ENDPOINT}, assign it to test steps and remove other endpoint which might have fixed value.
  3. Add the following project properties

 

  • HTTP_SERVICE1_ENDPOINT, say its value http://<hostname>:<port>/<rest of endpoint url>  - replace the actual value
  • JMS_SERVICE1_ENDPOINT, say its value jms://JMS_SESSION_ID::queue_<send queue name>::queue_<receiver queue name> - replace values
  • SOAP_PROTOCOL, say its possible values - http or jms that you can decide just before running the tests. Based on this, we have to set the value for SERVICE1_ENDPOINT  as either HTTP_SERVICE1_ENDPOINT or JMS_SERVICE1_ENDPOINT dynamically. This you can decide when you want to set like on Project Load script / Test Suite setup script / Test Case setup script. Here hoping that you know how to set a project property conditionally. This will avoid changing endpoint each time in each test step.

Here JMS_SESSION_ID is the same value that is provided in the hermes-config.xml file.

 

4. Regarding headers:

You can use events  - test step before run - add needed headers to the request based on SOAP_PROTOCOL value. Since you are checking condition here, you can set only required headers dynamically.

 

Hope this helps.



Regards,
Rao.

View solution in original post

4 REPLIES 4
Highlighted
Community Hero

Re: Can we combine multiple soap request in single WSDL

Do you mean to say that you want to run the test over HTTP and JMS? clarify otherwise?
Also what you mean by TIBCO steps?


Regards,
Rao.
Highlighted
Occasional Contributor

Re: Can we combine multiple soap request in single WSDL

Thank you for your reply @nmrao

 

 

We have SOAP over JMS and SOAP over HTTP, where SOAP headers are diffrent for each.

So can we invoke both services using same common headers, since headers we are passing through JMS properties and SOAP request only has envelop body.

 

Please help.

 

Thanks once again

Nishant

Highlighted
Community Hero

Re: Can we combine multiple soap request in single WSDL

Here are the assumptions I have based on your reply. Correct / Add more details otherwise.

 

  • As you mentioned, you got one wsdl with an operation. So you want to test this single operation using both http, jms.
  • I believe that you need to include JMS headers like JMSReplyTo or correlationId etc(or something else) when it is jms communication, and these aren't needed when it is http transport.
  • Considering first point, the soap request is same in both the transports.
  • You mentioned TIBCO earlier without much details. Hoping that you mean TIBCO EMS as jms is pointed.
  1. Yes, it is possible to achieve this. SoapUI uses HermesJMS to connect to different JMS vendors. So, you need to configure it so that it can connect to targetted JMS server.
  2. In the service interface, add the endpoint, say, ${#Project#SERVICE1_ENDPOINT}, assign it to test steps and remove other endpoint which might have fixed value.
  3. Add the following project properties

 

  • HTTP_SERVICE1_ENDPOINT, say its value http://<hostname>:<port>/<rest of endpoint url>  - replace the actual value
  • JMS_SERVICE1_ENDPOINT, say its value jms://JMS_SESSION_ID::queue_<send queue name>::queue_<receiver queue name> - replace values
  • SOAP_PROTOCOL, say its possible values - http or jms that you can decide just before running the tests. Based on this, we have to set the value for SERVICE1_ENDPOINT  as either HTTP_SERVICE1_ENDPOINT or JMS_SERVICE1_ENDPOINT dynamically. This you can decide when you want to set like on Project Load script / Test Suite setup script / Test Case setup script. Here hoping that you know how to set a project property conditionally. This will avoid changing endpoint each time in each test step.

Here JMS_SESSION_ID is the same value that is provided in the hermes-config.xml file.

 

4. Regarding headers:

You can use events  - test step before run - add needed headers to the request based on SOAP_PROTOCOL value. Since you are checking condition here, you can set only required headers dynamically.

 

Hope this helps.



Regards,
Rao.

View solution in original post

Highlighted
Occasional Contributor

Re: Can we combine multiple soap request in single WSDL

Worked as expected.

 

Thanks a ton @nmrao.!

 

New Here?
Join us and watch the welcome video:
Announcements
Script Wanted
Let's start July with new challenges!

Create a script to change request body before sending it to the server for the TechCorner tag!


Scripts created in June:
- A script to generate a request body based on data from Datasource
- A script to go through all response nodes and check the value of the required field
- A Dispatching script to get responses based on the values in Request Body
- A script to add a new tag and assign it to all TestCases in a TestSuite
Top Kudoed Authors