Skip to main content
Skip table of contents

Performance Tests - on client server -3.6.0

Performance tests addresses several areas:

  • registration of users

  • login in SAML application (for ex. SSP)

  • login with CP

Requirements - short summary:

  • A list of users created in AD, for which the tests will run.

  • Resources: 32CPU, 32GB Ram, 60Gb disk for performance test server (for 100 users in parallel; for 10 users, it is sufficient 4CPU and 8Gb Ram). The disk can be allocated under any location.

  • The server that will be created for performance tests should have access to the services: Veridium Services and RAEP. It is recommended that this server will have network access directly to WEBAPP servers and RAEP to application ports and also to Balancer in front of WEBAPPs in order to compare the results of the application and balancer + application.

1. How to prepare an environment for Load test - to add more details

  • optional: configure in websecadmin SSP application to use implicitUpn as NameID attribute.

  • remove uid from search by attributes in ldap

  • mandatory: configure in Veridium-manager(Websecadmin) Enrollment process to have only one step → AD Enrollment and disable User enrollment via invitation code from AD Enrollment. This is needed only during user registration.

  • it was tested with default journey and the following policies:

    • TRUE for Native Biometric - Mobile , PIN

    • all the other policies can be OPTIONAL or FALSE.

  • Observation: stickiness should be guaranteed by balancer for shibboleth either based on IP, either based on COOKIE. In case that IP based stickiness, the tests should be started from different servers or they should be sent directly to a specific server.

  • Please check in RAEP if caching is enabled: C:\Program Files\VeridiumID\RAEPServer\RaWebApp\Web.config → <add key="CacheCerts" value="true" />

  • Please check in Veridium-manager(Websecadmin), in LDAP → search by Attributes that all fields are really used in AD (please do not leave here fields that are not used in LDAP search, because it might generate load on AD servers, for example if a field is almost all the time N/A in LDAP, the search will take a long time).

  • please check in websecadmin → config.json that "replaceDeviceWhenOneDevicePerAccount"is set to false.

2. How to import download archive

Please download archive:

for version 3.6.0:

It contains the following:

/dockerCompose/ - docker compose to start infrastrusture.
/images -images need for reporting performance of the system.
/perfTests/scripts/ - usefull scripts 
/automation-testing-runner-1.0.0-SNAPSHOT/ - the performance script java tool

3. Server Requirements

## need to have installed:
unzip mlocate net-tools wget jq bind-utils install java-1.8.0-openjdk
docker-ce docker-ce-cli  (Docker version 24.0.5)
docker-compose (prefered v2.20.2, should be at least v2)

## the user that will run tests needds to be able to run docker commands: docker and docker-ps. So it should be created a group, docker, and this user should be added to it.
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo usermod -aG docker $USER

setfacl --modify user:<user name or ID e.g. VeridiumID>:rw /var/run/docker.sock

3.1 Appendix for Server Requirments

#For above requirments to be fulfield, one should run below commands to have them in place with a sudoer user (e.g. root):
# Installing Packages:
#1.1 use sudo if you are not root
      sudo yum install unzip mlocate net-tools wget jq bind-utils java-1.8.0-openjdk

#or 1.2 use without sudo if you are root: 
     yum install unzip mlocate net-tools wget jq bind-utils java-1.8.0-openjdk

#2.Installing commands for docker, docker-compose, docker-cli. Recommended Docker version - 24.0.5 /  Recommended Docker-compose version at least v2

sudo yum -y install docker-ce docker-ce-cli

sudo systemctl enable --now docker.service
sudo curl -L "$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Finish chapter 3. Server requirments - continue with docker user and group permissions

4.How to start tests

  1. Login to load test server with any other user besides root (e.g. user: VeridiumID)

  2. Create a start Infrastructure script

    1. CODE
    2. Paste below content

      command -v docker >/dev/null 2>&1 || { echo >&2 "I require docker but it's not installed.  Aborting."; }
      docker -v
      docker load -i ./images/grafana.tar
      docker load -i ./images/graphiteapp.tar
      docker load -i ./images/cassandra4.0.9.tar
      docker ps
      docker-compose -f ./dockerCompose/infra/docker-compose.yaml up -d
  3. Create a stop Infrastructure script

    1. CODE
      ## to stop the infrastructure, run 
      docker-compose -f ./dockerCompose/infra/docker-compose.yaml down
  4. check if the reporting infrastructure links are available:

    1. http://IP:3000 link for Grafana, to see performance

    2. http://IP:8084 link for Graphite, to see raw metrics

  5. Define Grafana connection to Graphite (url: http://graphite:8080) and import grafanaDashboard.json into Grafana. json file is found in uncompressed archive.

  6. Generate a file with a list of users (users also created in Active directory) - users.txt. Please see below an example of file.



user_loadtest1 | ldappassword1
user_loadtest2 | ldappassword2
user_loadtest3 | ldappassword3

  1. please fill in with the environment details, the following file automation-testing-runner-1.0.0-SNAPSHOT/bin/envfile.json

    1. You will need to update lines : 3-11, 14, 19.

  "enrollmentIntegrationId": "ADv2MultiStepEnrollment",
  "websecBaseUrl": "",              ## URL for WEBSEC SERVICES
  "dmzBaseUrl": "",         ## URL for DMZ SERVICES
  "adminBaseUrl": "",     ## URL for WEBSEC ADMIN 
  "raBaseUrl": "",                  ## URL for RAEP
  "epBaseUrl": "", ## URL for EP flow
  "ssp": {
    "login": "",       ## URL for SSP login 
    "sso": "",  ## URL for shibboleth
    "status": "" ## URL for shibboleth
  "cassandra": {                                                        ## do not modify this; this is local cassandra, where the devices will be saved, after registration process 
    "host": "localhost",      
    "port": 9042
  "graphite": {                                                         ## do not modify this; this is local graphite, where results will be published 
    "enabled": true,
    "host": "localhost",
    "port": 2003,
    "stepSec": 10
## please generate a fried certificate from websecadmin -> Service credentials -> Custom services -> Create custome service certificate -> integration AD and set device id to bdd. A P12 file will be generated.
##Transfer over scp the new certificate renamed only with the password LoadTestLinux Server

## from output resulted when running the command base64 -w0 123456789.p12 fillin in certificate from below line the content (fyi: 123456789 it's a password example name for certificate)
  "deviceEnrollmentProxy": {                                            
    "certificate": "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",
    "certificatePassword": "a517a029-9e96-4978-9346-844fec6bd721"
  1. start the tests, based on what needs to be tested.

Scripts can be found in this location:

cd automation-testing-runner-1.0.0-SNAPSHOT/bin

 For help instructions run

cat README.txt

usage: runner
    --env-file <env-file>                   Provides support for specifying environment base path to run the automated tests.
    --periodic <periodic>                   Provides support for running the tests periodically. It accepts the interval in ms. 0 means a single cycle will be executed and will stop.
    --service-name <service-name>           Label, this can be used to differenciate different executions
    --tags <tags>                           Provides support for specifying the tags we want to run from BDD tests: @enrolment, @saml-login, @cp-enrolment, @cp-login
    --tasks <tasks>                         Number of parallel tasks; users from usernames-file will be devided in the number of tasks and each task will run with that list
    --username <username>                   Username used in tests; please use either username either usernames-file
    --usernames-file <usernames-file>       Usernames file used in tests.

 Below examples should be executed in the following order:

Create a users text file ( inside it, all dummy users which exist in AD should be defined)

vi users.txt 
#If the tests are started for a specific user only 
vi user_lt1000

Add your list of users as per implicitupn or upn value

#example for file called: users.txt :

#example for file called user_lt1000:

nohup ./automation-testing-runner --service-name local --env-file envfile.json --tags @mobile-device-enrolment --periodic 0 --usernames-file users.txt --tasks 50 &

nohup ./automation-testing-runner --service-name local --env-file envfile.json --tags @saml-login-qr --periodic 1 --usernames-file users.txt --tasks 50 &
## without generating logs
nohup ./automation-testing-runner --service-name local --env-file envfile.json --tags @saml-login-qr --periodic 1 --usernames-file users.txt --tasks 50 >/dev/null 2>&1 &

## for windows tests, the following should be executed:
## to enroll cp device, one time to execute
./automation-testing-runner --service-name local --env-file envfile.json --tags @cp-device-enrolment --periodic 0
## run the cp tests (users are already registered)
nohup ./automation-testing-runner --service-name local --env-file envfile.json --tags @cp-login-qr --periodic 1 --usernames-file users.txt --tasks 50 &

## first execution time will be higher because for each user a certificate will be generated; this certificate will be cached, so next runs will be 4 times fasters.

##to stop tests, run

##to run for a specific user, use the below command:
./automation-testing-runner --service-name local --env-file envfile.json --tags @mobile-device-enrolment --periodic 0 --username user_lt1000

@mobile-device-enrolment : required for each user
@cp-device-enrolment : one time for any tested user

@saml-login-qr :  qr authentication with mobile biometrics

@saml-login-ldap-qr :   first ldap, then qr authentication with mobile biometrics

Enrollment + login
@mobile-device-enrolment-and-saml-login : one enrollment + one login

Test results

The tests were done having in front of the application a network load balancer. Any additional load balancer can bring additional delay in processing.

There is a direct link between number of CPU and memory and the number of sessions per minute. Doubling the number of CPU and memory will double the performance of the application.

Enrollment process

Registration of 50.000 users.

Number of parallel threads: 50

Enrollment duration average: 1.15 sec

Speed: 2400 enrollments/minute

LOAD: 1 WEBAPP 3CPU; 3 PERSISTENCE: 1.5 CPU each; Load Machine: 30 CPU. The high load on this machine is due to certificate generation, that takes many CPU resources.



Login process with SSP

Test executed with 50.000 users.

Number of parallel threads: 100

Login duration average: 1.65 sec

Speed: 3500 logins/minute

LOAD: 1 WEBAPP 15CPU; 3 PERSISTENCE: 6 CPU each; Load Machine: 3 CPU




Login process with CP - first time registration

Test executed with 10.000 users.

Number of parallel threads: 100

Login duration average: 3.5 sec

Speed: 1400 logins/minute

LOAD: 1 WEBAPP 4CPU; 3 PERSISTENCE: 2 CPU each; Load Machine: 4 CPU; RAEP machine: 12 CPU; Domain machine: 1 CPU

Login process with CP - second login (certificate is cached in RAEP).

Test executed with 10.000 users.

Number of parallel threads: 100

Login duration average: 1.1 sec

Speed: 5300 logins/minute

LOAD: 1 WEBAPP 15CPU; 3 PERSISTENCE: 6 CPU each; Load Machine: 6 CPU; RAEP machine: 1 CPU; Domain machine: 1 CPU


Troubleshooting commands

How to connect to local Cassandra:

## how to connect to local cassandra, where registrations are kept
docker ps -a
## connect to cassandra docker
docker exec -ti `docker ps -a | grep cassandra | awk -F' ' '{print $1}'` bash
## connect to cassandra db: 
## run different queries:
use veridiumbdd;
select * from enrolment_contexts;

##change grafana password
grdc=`docker ps | grep grafana | awk '{print $1}'`
docker exec -ti $grdc grafana-cli admin reset-admin-password "GrafanaPassword123"
docker system prune -a
docker-compose -f dockerCompose/infra/docker-compose.yaml down
docker rm -f $(docker ps -a -q)
docker volume rm $(docker volume ls -q)
docker-compose -f dockerCompose/infra/docker-compose.yaml up -d

Java PKIX Issues


Enable debug logs of all http requests and responses done by BDD clients:

  1. Create the file automation-testing-runner-1.0.0-SNAPSHOT/bin/log4j2.xml with the following content

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        <!-- File Appender -->
        <File name="File" fileName="logs/bdd-runner-logs.log">
            <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />

        <Logger name="com.veridiumid.automation.httpclient" level="debug">
            <AppenderRef ref="CONSOLE"/>
            <AppenderRef ref="File" />

        <Logger name="com.datastax.oss.driver.internal.core" level="OFF"/>

        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File" />
  1. Add this file to JVM options:

export JAVA_OPTS=$JAVA_OPTS:-Dlog4j.configurationFile=log4j2.xml


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.