Sign inSign up

parasoft/soavirt-server

By parasoft

Updated 22 days ago

Parasoft SOAtest & Virtualize Server

Image
1

10K+

parasoft/soavirt-server repository overview

Quick reference

What is Parasoft SOAtest & Virtualize Server?

Parasoft SOAtest & Virtualize Server is a lightweight server that hosts service virtualization assets created in the Parasoft Virtualize desktop and Parasoft Continuous Testing Platform (CTP), as well as execute tests created in the Parasoft SOAtest desktop or CTP. The server architecture is designed to provide a smaller memory footprint for higher performance of individual servers, as well as to let organizations take advantage of standardized application deployment infrastructures for availability, clustering, and scalability.

How to use this image

Note: You must accept the Parasoft End User License Agreement (EULA) to use this product. Change ACCEPT_EULA from false to true in the below examples.

To run the image:

$ docker run -d -p 9080:9080 -p 9443:9443 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server

To publish the container using non-default ports, additional environment variables must be set so that soavirt-server is aware of its external endpoints:

$ docker run -d -p 7070:7070 -p 7443:7443 --env HTTP_PORT=7070 --env HTTP_PORT=7443 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server

This command runs the soavirt-server on non-default ports for HTTP. The environment variables are used to update configurations at the time of running the docker container so that soavirt-server will be available on the configured ports. It is important for connectivity between Parasoft products that the environment variables be set so that ports are consistent between external and internal connections.

To run with SSL, the server.xml in the soavirt-server base [/usr/local/parasoft/soavirt/conf/server.xml] must be configured to set up a secure connector. The secure connector should be set to use port 9443, which can be remapped by the environment variables when executing the docker run command based on the value passed in the HTTPS_PORT environment variable.

$ docker run -d -p 9080:9080 -p 9443:9443 --env HTTP_PORT=9080 --env HTTPS_PORT=9443 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server

If you are using the legacy ActiveMQ provider to monitor server events, you will also need to set the EVENTS_PORT and STATISTICS_PORT environment variables. For example:

-p 9617:9617 -p 9618:9618 --env EVENTS_PORT=9617 --env STATISTICS_PORT=9618

Notes

  • Docker Desktop is not supported. If you run the Parasoft SOAtest and Virtualize Server container in Docker Desktop, the Parasoft machineId will be 0.

  • Upgrading docker may result in the Parasoft machineId changing.

  • When running on Docker hosts with more than 32 CPU cores the product will print the following in the logs

This machine exceeds the licensed number of CPU cores 

To reduce the number of cores available, add this to the docker run command, where 0-3 is the number of cores to limit the image to

--cpuset-cpus 0-3

Alternatively, contact Parasoft to enable running on higher core counts.

Principles of operation

Licensing the deployment

A license may be set by adding the necessary properties to the config.properties file and building a new image, mounting it to the container, or passing the config.properties directly as environment variables.

If you want to mount the config.properties file to the container, add this to your docker run command:

Linux:

-v "${PWD}/config.properties:/usr/local/parasoft/soavirt/webapps/ROOT/WEB-INF/config.properties"

Windows:

-v "%CD%/config.properties:/usr/local/parasoft/soavirt/webapps/ROOT/WEB-INF/config.properties"

If you want to encrypt a password before adding it to the config.properties file or the REST API payload, you can run this command:

docker run --entrypoint /bin/sh soavirt-server /usr/local/parasoft/soavirt/webapps/ROOT/scripts/encodepass.sh <YOUR_PASSWORD>

If running in Docker Engine, here is an example that sets the license using the REST API:

curl -X PUT "http://localhost:9080/soavirt/api/v6/preferences/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"eula\":{\"accepted\":false},\"license\":{\"licenseServer\":{\"host\":\"<LICENSE_SERVER_HOST>\",\"port\":<LICENSE_SERVER_PORT>,\"useSpecifiedServer\":true,\"authEnabled\":true,\"username\":\"<LICENSE_SERVER_USERNAME>\",\"password\":\"<LICENSE_SERVER_PASSWORD>\"},\"virtualize\":{\"enabled\":true,\"useNetwork\":true,\"network\":{\"edition\":\"custom_edition\",\"customFeatures\":[\"Service Enabled\",\"Performance\",\"Extension Pack\",\"Validate\",\"Message Packs\",\"Unlimited Hits/Day\"]}},\"soatest\":{\"enabled\":true,\"useNetwork\":true,\"network\":{\"edition\":\"custom_edition\",\"customFeatures\":[\"SOA\",\"Server API Enabled\"]}}}}"

If you want to pass the config.properties directly as environment variables, here is an example that passes the properties "virtualize.license.use_network=true" and "virtualize.license.network.edition=performance_server_edition" as environment variables in the docker run command:

--env virtualize.license.use_network=true --env virtualize.license.network.edition=performance_server_edition

Environment variables

  • HTTP_PORT defines the http port of soavirt-server
  • HTTPS_PORT defines the https port of soavirt-server
  • EVENTS_PORT defines the port soavirt-server will use for the Event Monitoring broker (used with legacy ActiveMQ provider)
  • STATISTICS_PORT defines the port soavirt-server will use for the Hit Statistics broker (used with legacy ActiveMQ provider)
  • ACCEPT_EULA accepts the End User License Agreement if set to 'true'

Image customization

This image can be customized by mounting files in the container or building a custom image.

Example 1 - Run the image with the config.properties or server.xml file mounted to the container

Add a variable to your docker run command to point to your config.properties or server.xml file. This example mounts the config.properties file using default ports:

Linux:

$ docker run -d -v "${PWD}/config.properties:/usr/local/parasoft/soavirt/webapps/ROOT/WEB-INF/config.properties" -p 9080:9080 -p 9443:9443 -p 9617:9617 -p 9618:9618 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server

Windows:

$ docker run -d -v "%CD%/config.properties:/usr/local/parasoft/soavirt/webapps/ROOT/WEB-INF/config.properties" -p 9080:9080 -p 9443:9443 -p 9617:9617 -p 9618:9618 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server

You can mount the server.xml file to the container the same way to apply SSL settings:

Linux:

$ docker run -d -v "${PWD}/server.xml:/usr/local/parasoft/soavirt/conf/server.xml" -p 9080:9080 -p 9443:9443 -p 9617:9617 -p 9618:9618 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server 

Windows:

$ docker run -d -v "%CD%/server.xml:/usr/local/parasoft/soavirt/conf/server.xml" -p 9080:9080 -p 9443:9443 -p 9617:9617 -p 9618:9618 --env ACCEPT_EULA=false --name soavirt-server parasoft/soavirt-server 

Example 2 - Build the image with a custom config.properties file

Copy the config.properties file from the image:

$ docker run --rm --entrypoint cat parasoft/soavirt-server /usr/local/parasoft/soavirt/webapps/ROOT/WEB-INF/config.properties > config.properties

Dockerfile:

FROM parasoft/soavirt-server

COPY config.properties /usr/local/parasoft/soavirt/webapps

Docker build command:

$ docker build --no-cache --tag soavirt-custom-config

Example 3 - Build the image with custom Tomcat files for SSL

Copy the server.xml file from the image

$ docker run --rm --entrypoint cat parasoft/soavirt-server /usr/local/parasoft/soavirt/conf/server.xml > server.xml

Dockerfile:

FROM parasoft/soavirt-server

COPY config.properties /usr/local/parasoft/soavirt/webapps
COPY server.xml /usr/local/parasoft/soavirt/conf
COPY soavirt.keystore /usr/local/parasoft/soavirt/conf

Docker build command:

$ docker build --no-cache --tag soavirt-ssl

Example 4 - Install Google Chrome for browser playback

This image does not contain any web browsers. Google Chrome can be installed to support test scenarios that use Browser Playback tools.

Dockerfile:

FROM parasoft/soavirt-server

USER root:root

RUN rpm -ivh \
        http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-6.el8.noarch.rpm \
        http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-8-6.el8.noarch.rpm && \
    dnf install -y --nodocs --repo baseos --repo appstream \
        liberation-fonts \
        vulkan-loader \
        xdg-utils && \
    rpm -evh \
        centos-stream-repos \
        centos-gpg-keys && \
    rpm --import https://dl.google.com/linux/linux_signing_key.pub && \
    dnf install -y --nodocs \
        https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm && \
    dnf clean all && \
    rm -rf /var/cache/dnf

USER parasoft:parasoft

Note: soavirt-server uses Red Hat UBI as its base image. Google Chrome requires a few extra dependencies that are not available in Red Hat UBI. The Dockerfile pulls in the missing dependencies from CentOS Stream.

Docker build command:

docker build --no-cache --tag soavirt-server-chrome .

By default, Google Chrome crashes when run in a Docker container. To prevent this from happening, certain Chrome arguments must be enabled, including the argument to enable headless browser playback. For SOAtest Browser Playback tools, these Chrome arguments can be configured by setting the java system property com.parasoft.browser.BrowserPropertyOptions.CHROME_ARGUMENTS to the value headless,disable-gpu,no-sandbox,disable-dev-shm-usage. This java system property can be set as follows:

docker run -d -p 9080:9080 -p 9443:9443 --env ACCEPT_EULA=false --env JAVA_OPTS=-Dcom.parasoft.browser.BrowserPropertyOptions.CHROME_ARGUMENTS=headless,disable-gpu,no-sandbox,disable-dev-shm-usage --name soavirt-server-chrome soavirt-server-chrome

Example 5 - Using a modified java.security file

You may want to use a modified java.security file if, for example, you want to enable or disable specific SSL cipher suites or make other related security configurations. To do so, create a modified copy of your java.security file and either mount it into your container at /usr/local/parasoft/java.security or build a new image that includes the customized file.

There are a few options you will want to keep in mind when applying your changes:

When using your modified java.security settings, it's important to disable the global properties. If you don't, they will override your modifications:

-Djava.security.disableSystemPropertiesFile=true

To override the default security file, explicitly specify that the JVM should use your custom security properties file:

-Djava.security.properties==/usr/local/parasoft/java.security

Note the double equal sign (==) that tells Java to fully replace the java.security settings that would normally be loaded from the jvm.

To debug which java.security properties were loaded, add the java.security.debug property:

-Djava.security.debug=properties

Put all together, you would add the following to the run command:

--env JAVA_OPTS="-Djava.security.disableSystemPropertiesFile=true -Djava.security.properties==/usr/local/parasoft/java.security -Djava.security.debug=properties"

Known limitations

License

You need to view and agree to the Parasoft End User License Agreement (EULA) for the software contained in this image.

As with all Docker images, these likely also contain other software which may be under other licenses. As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.

Tag summary

Content type

Image

Digest

sha256:ff2e738ca

Size

810.8 MB

Last updated

22 days ago

docker pull parasoft/soavirt-server