Test Configuration - Execution

Version History:

Version#
Date
Modified By
Description of Modification
1.02/10/2016Sailaja AdusumilliInitial Version

Overview

This page describes the actual setup and execution of CONNECT performance testing

Although the initial plan was to have different HCIDs for each server instance, it turned out to not be possible because of the canned responses and other responder config issues. These responses have a hard-coded value for the initiator's HCID and no logic to override/populate with the correct initiator HCID depending on the initiator's actual HCID. For this reason, initiator HCID will always be 1.1 and responder HCID will always be 2.2. Given these constraints, the simplest approach will be to have two pre-configured setups for each instance, one as 1.1 when initiating and one as 2.2 when responding.


Configuration

Important note regarding UDDIConnectionInfo.xml and internalConnectionInfo.xml

As of CONNECT 5.1, both files have been replaced with the more versatile exchangeInfo.xml and internalExchangeInfo.xml files. For users of CONNECT 5.0 and earlier versions, substitute references to these new files with the original uddiConnectionInfo.xml and internalConnectionInfo.xml files

For the purpose of CONNECT 4.6 Performance Test, we created a SoapUI project (simply copies of the ValidationSuite with some updates), loading it into LoadUI and configurating LoadUI to execute load tests as needed. This SoapUI project is for all the application servers we support (JBoss,WAS,WildFly,WebLogic). In SoapUI project we will be editing the initiating GFE's internal endpoints and target endpoints. All initiating machines will be HCID 1.1 and all responding machines will be HCID 2.2. LoadUI is sitting on a central Linux server which will be used to run tests to send adapter request to CONNECT instances on GFEs.

ConnectPerformanceTest Suite Setup

  1. Open the SoapUI CONNECTPerformance Test Suite in a text editor (local machine)
  2. For all occurrences, replace "http:://localhost:8080" with "http://<GFE_IP>:8080" (the IP of the initiating GFE) and save the project file.
  3. Close the text editor and open the project in LoadUI.

GFE Resources Setup

Common Configuration:

CONNECT Ear

A customized version of the CONNECT ear is required to execute performance tests. To generate this ear, complete the following steps:

  1. Clone the plugins directory if it doesn't already exist
    1. CD to one level above the CONNECT directory (so that plugins directory will be in the same directory as CONNECT)
    2. Execute the following command:  git clone https://github.com/CONNECT-Solution/Plugins.git
  2. If the plugins directory already exists, simply go into and do a git pull if needed to download the performance adapter plugin and execute: mvn clean install
  3. CD into Plugins/PerformanceTestTools and execute: mvn clean install
  4. Go into the CONNECT directory and build the CONNECT ear with PerfTest profile which includes PerformanceTestTool jar in CONNECT.ear.

Initiator Gateway

  1. Configure this instance (if not done already) to recognize itself as HCID 1.1 (internalExchangeInfo.xml, mpi.xml and adapter.properties and gateway.properties)
  2. In exchangeInfo.xml, point all 2.2 endpoints to the IP/hostname of the responding gateway.
  3. The Entity layer implementation should be configured to JavaImpl for all services in SpringProxyConfig files.
  4. Make sure all services are in Passthrough mode.
  5. Copy all resource files from PerformanceTestTools (\\Plugins\PerformanceTestTools\src\main\resources) to CONNECT config folder, e.g:${JBOSS_HOME}/modules/system/layers/base/org/connectopensource/configuration/main
  6. Deploy CONNECT.

Responder Gateway

  1. Configure this instance to recognize itself as HCID 2.2 (internalExchangeInfo.xml, mpi.xml and adapter.properties and gateway.properties)
  2. In the exchangeInfo.xml, set all 1.1 endpoints to the IP/hostname of the initiating gateway.
  3. The Entity layer implementation should be configured to JavaImpl for all services in SprintProxyConfig files.
  4. Make sure all services are in Passthrough model
  5. Copy all properties files from PerformanceTestTools/config folder to CONNECT config folder, e.g.: ${JBOSS_HOME}/modules/system/layers/base/org/connectopensource/configuration/main
  6. Deploy CONNECT.

Application Server Configuration:

WildFly 8.2.1

  1. Add the following to each datasource in $JBOSS_HOME/standalone/configuration/standalone.xml

    standalone.xml


    <pool>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>25</max-pool-size>
    </pool>
    <statement>
        <prepared-statement-cache-size>25</prepared-statement-cache-size>
        <share-prepared-statements>true</share-prepared-statements>
    </statement>
  2. Search for thread-pool instances in standalone.xml and increase thread pool size to have 100 max thread count.
  3. Remove "<handler name="CONSOLE"/>" from the jboss domain logging handlers.
  4. Turn off Event Logging by commenting out both loggers in EventLoggerConfigFactory.xml.

    EventLoggerConfigFactory.xml


    <beanid="loggersList"class="java.util.ArrayList">

        <constructor-arg>

            <list>
                <!--ref bean="log4jEventLogger" />
                <ref bean="databaseEventLogger" /-->
            </list>
        </constructor-arg>
    </bean>
  5. Exchange certs between initiator and responder.
  6. Verify the time is in sync between both GFE machines (within a minute)
  7. Comment out any additional JAX-WS logging and JPDA options from server startup config ($JBOSS_HOME/bin/standalone.conf or standalone.conf.bat) – use "#" on Linux, "rem " on Windows:

    standalone.conf or standalone.conf.bat


    rem set"JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true"
    rem set"JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true"
    rem set"JAVA_OPTS=%JAVA_OPTS% -Djavax.enterprise.resource.xml.webservices.security.level=FINE"
    rem set"JAVA_OPTS=%JAVA_OPTS% -Djavax.enterprise.resource.webservices.jaxws=FINE"
    #$JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:%LM%\lib\vbjorb.jar -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

WebSphere 8.5.5.3


Following results were captured by running out of box WebSphere performance tuning script.

Go to Websphere installation directory ~/WebSphere/AppServer/bin/ and run the following command:

  • $ ./wsadmin.sh -f ./applyPerfTuningTemplate.py -nodeName node_name -serverName server_name -templateFile ../scriptLibraries/perfTuning/V70/peak.props  

or  for higher server version:

  • $ ./wsadmin.sh -f ./applyPerfTuningTemplate.py -nodeName node_name -serverName server_name -templateFile ../scriptLibraries/perfTuning/<V70 or higher>/prod.props

When applying this script, the CONNECT JVM arguments get overridden. We need to log back to WAS admin console and add the following JVM properties:

JVM Properties
-Xmx5000m -XX:PermSize=1024m -XX:+PrintGCTimeStamps -XX:NewRatio=3 -Dnhinc.properties.dir=/nhin/CI/nhinproperties -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.ssl.trustStorePassword=changeit -Djavax.net.ssl.keyStore=${WAS_PROPS_DIR}/gateway.jks  -Djavax.net.ssl.keyStoreType=JKS -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStore=${WAS_PROPS_DIR}/cacerts.jks -DCLIENT_KEY_ALIAS=gateway -Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine=true


Note:

For JavaImpl in WAS:

When switching to JavaImpl, the server throws Operation Connection.commit is not allowed during a global transaction. It is due to the fact that Connect Audit-Logging was moved from TransactionManagementType.BEAN to TransactionManagementType.CONTAINER. To fix this: 

Navigate to Resources > JDBC > JDBC providers > JDBC_provider > Data sources > auditrepo > WebSphere Application Server data source properties  Check Non-transactional data source property.

LoadUI Setup (tutorial)

http://dl.eviware.com/list_loadui2.html - 

loadui/pro/2.7.2/LoadUI-Agent-2.7.2.exe
  1. Open LoadUI
  2. Double click Create Project
    1. Give the Project a name
    2. Give the Project file a name
  3. Click Create
  4. Drag the VU component into the main window
  5. Double click in the new VU window to expand the Virtual User workspace
  6. Drag a Fixed Rate Generator and a SoapUI Runner into the VU workspace
  7. In the Generator window, click Menu > Settings and select a burst size of 5
  8. In the SoapUI Runner window, click on Project and browse to the SoapUI project xml file, select the testSuite and select the testCase
    1. Note: After the project loads, you might have to click on Project again to select the testSuite and the testCase
  9. Click Run Once to make sure the LoadUI "adapter" is sending requests to the correct initiating CONNECT instance and that the test is running as expected (troubleshoot if necessary)
  10. Click on the circle on the bottom center of the Generator window to open a "wire" and drag that wire to the top circle on the SoapUI Runner window
  11. In the scenario menu bar, set a time limit of 2 seconds and click the Run button (circle with the right-pointing triangle).

Here's an explanation of everything that was set up:

Component
Element
Description
VU (Virtual User)N/AThis is a scenario, this allows you to have different scenarios for one project (JBoss project, PD/QD/RD/DS separate scenarios)
GeneratorBurstThis is how many requests get sent out AT ONE TIME
GeneratorRateThis was already set to 10 by default but basically, it's how many Bursts per second
Scenario Menu BarLimit (time)This sets a limit for how long the test should run (you can set time, request or failure limits)