For my task at my current employer, I was to containerize SoapUI in an OpenShift environment by taking a SoapUI runner, and incorporating it inside of a Docker container.
** I did just that! **
What does it do?
By containerizing SoapUI and its runner, this allows you to have a portable SoapUI installation that lets you run your SoapUI projects anywhere!
Included in this docker container, is the following:
- A Centos operating system
- A Python interpreter
- A Java JDK
- A SoapUI Installation
This container utilizes the standard Python library to launch a simple http server that will listen on port 3000 for POST requests. These POST requests would contain pertinent information for your SoapUI tests. That would include: - The URL to test against - The Suite to run - The SoapUI Project XML
Currently I use this setup in an OpenShift configuration to listen on a URL
Which will accept said POST requests, and run any SoapUI tests fired at it.
note: I recommend familiarizing yourself with Docker, at least to the point where you know how to run a container.
docker pull ddavison/soapui
docker run -it -p 3000:3000 ddavison/soapui
- Curl the service by sending a SoapUI project xml file
curl -F "project=@/path/to/soapui-project.xml" \ -F "suite=YourSuite" \ http://localhost:3000
After running the SoapUI tests, there are different HTTP status codes associated with the run.
|200||OK||All SoapUI Tests ran successfully and passed|
|550||Test Failure(s)||You have failures in the SoapUI Test suite / cases. You can check the content of the request to determine what failed|
|551||No Suite||You did not specify the `suite` POST parameter with the name of the suite you wanted to run|
|552||No SoapUI Project||You did not specify the 'project' POST parameter with the proper SoapUI XML data. Remember: This needs to be the actual file itself sent as multipart/form-data. E.g:
curl -F "[email protected]" ...
|500||Internal Server Error||An exception occured while running the SoapUI Tests|