Performance Tests - on client server
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: https://veridium-repo.veridium-dev.com/repository/VeridiumUtils/Veridium_3.6.0/bdd/perfTests.tar.gz
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 containerd.io (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 containerd.io
sudo systemctl enable --now docker.service
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(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
Login to load test server with any other user besides root (e.g. user: VeridiumID)
Create a start Infrastructure script
- CODE
vi StartInfrastructure.sh
Paste below content
CODE#!/bin/bash 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
Create a stop Infrastructure script
- CODE
vi StopInfrastructure.sh
CODE## to stop the infrastructure, run docker-compose -f ./dockerCompose/infra/docker-compose.yaml down
check if the reporting infrastructure links are available:
http://IP:3000 link for Grafana, to see performance
http://IP:8084 link for Graphite, to see raw metrics
Define Grafana connection to Graphite (url: http://graphite:8080) and import grafanaDashboard.json into Grafana. json file is found in uncompressed archive.
Generate a file with a list of users (users also created in Active directory) - users.txt. Please see below an example of file.
CODEuser_loadtest1 user_loadtest2 user_loadtest3
Or
user_loadtest1 | ldappassword1
user_loadtest2 | ldappassword2
user_loadtest3 | ldappassword3
please fill in with the environment details, the following file automation-testing-runner-1.0.0-SNAPSHOT/bin/envfile.json
You will need to update lines : 3-11, 14, 19.
{
"enrollmentIntegrationId": "ADv2MultiStepEnrollment",
"websecBaseUrl": "https://dev9.veridium-dev.com/websec", ## URL for WEBSEC SERVICES
"dmzBaseUrl": "https://dev9.veridium-dev.com:8544/dmzwebsec", ## URL for DMZ SERVICES
"adminBaseUrl": "https://dev9.veridium-dev.com:9444/websecadmin", ## URL for WEBSEC ADMIN
"raBaseUrl": "https://dev9-raep.dev.local/RaWebApp", ## URL for RAEP
"epBaseUrl": "https://dev9-raep.dev.local/BopsEnroll/BopsEnroll.svc", ## URL for EP flow
"ssp": {
"login": "https://dev9.veridium-dev.com:9987/ssp/saml/login", ## URL for SSP login
"sso": "https://dev9.veridium-dev.com:8944/idp/profile/SAML2/POST/SSO", ## URL for shibboleth
"status": "https://dev9.veridium-dev.com:8944/idp/profile/veridium-session-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": "MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCA+gwgDCABgkqhkiG9w0BBwGggCSABIID6DCCBWQwggVgBgsqhkiG9w0BDAoBAqCCBPswggT3MCkGCiqGSIb3DQEMAQMwGwQULEbAX9bb8svQS6JJwoWs/CdrOBwCAwDIAASCBMgKPNWJAJZ/F94upuUxy9/lohgFKjcH25aaFZ0Mz9+ZRNrCspYm9F7UiTVpgYMc5l33no4l1omBqv8giRhdCWGvBaXPOMFXE5F1v+jhRaYgGya8gW1JmDXpxqmM/8XNkgFFhnghe+yMeGkhqbMCrV6IUZQOVq5ommNyv3BGYWu9nWpMDFTU4wDngVcwA/HCkibswOqJA19rG0aLLh/k9bHqVzpStOk2JZ9PsCkJ/e4xxzRs0NLhBjToKs29u/Q8wG04/auXBpvkAKi9KbIwzRrkjsYjQ8p//tLlD9liCxd8HBWw99SJtF2vwdzFlPTvyTq+8IuxjpwFdLoy56gRT8fWdPNnCkYhTWAWvlj+DWzvHFwZsas3izi4nVet4pRgzuvjW8Gs4RpCcwe92qy8TACS3WcRlkyCi+MfIutKZDj6AVR3GBKw5fAcnc1aSf98W1aG3L+9baDkAg6uvyJXFuwJCaMlMIHH16hRaFiNtIVnEKdqDk0vDc+5vV1BGjekF8GG3zgBa7Bu86N9E6LirULtYc3DRjAPunfitX8K4V0yE6poZ9bd+9tX1qwIATPPRI1ayexSoMOYjkgDDG6ZDMDE3jeZTJbmnLuTjJVAS5d0zyLg6t/OY8yQcIXdrXWteM/gUXR6N6g9IMCepMmO3q/qLTQu7/AqJezqZFOkegonIcv4P0hmff14uHCdV5m2SBoKnJhmrujDK+WNLTwfDoHmDcTyb303zkz2iXxcrB/3UMBdVr2Y8rdcQhgE0xf3LyC23UUJAZ4yvUP9S3hxyT2VtwjNoir0VBc1Xl5+fNoN5Dnd0xB0zzKFivKWIWAKEvlw8xVagGaAIFzkUALNC3LKmyCm7W2Ek9lXNuOA41LQIpUM9P5PVrhxXflumG921JmXdHCSAjS7fgGguQ8IRe7nXVgOqdDEnoyZ2y+m+WN5Bn9Zy1eDlHi24G0HOgp0B7TRSLZK/+fGUNE46f+TZaEny6Wjn0jkn4ufXhWktGVcWH5xyFs24f6w227wjmQ8yWvsf0ANRGICc8AbkXG/vcAs2zY4KZDVWfd7hXwfTfcLQzjsEJ0+JUiHz6BYnrZ8Sf6h+mAHK9Qt7G+7vE8GwWERUYGrTwA1pZW5Uf1PBJKWp2jjk/GIZP10YpvYX3xdDaNDb1LWi9XgKDGYRCneevbr93Y3T2OK8GIrJpLI/Mf/wgpcmvZBBIID6OWTFgFRmHLJFgV1dOTSyh0lWZ4TSQ6iBIIBgGGNXFenkdrLqa3VPyMWOUF9GKPQDC/RnOqxsd2Ox9ZMSQ2XMOhnjbbrfRXmd9hArFBQ6Ztmy3hIK6MV5qRW/Q4tzdDVrmA7of+H6LKxC0irrk2whkqm6Y9UshiEmhfsGwxQAK0AsQceHFRbI3hv4JWH6cV7zcuqvnuvltTDlxu+nEVoL6My018KQwrRX0i8kJrHW8wE9oFFoueBH0RzlYoqPpH7jwp4Xd8ZvxeD7yYNwi4tsXgYFrJlisd8OB6ZtFJ/T/cWOzK/92pVLZas5F+B3iszYvnpEf2KaP88Nhs+pfnm4DW+2170vcuKsy3OCLbp+frjgNhUm5trJ+bUBRhdF8mEL7qCG+c8IIuArCcgjAtYcp4uPiZeuoCd2O0VVyGpuTlmqlnbIgVGZzFSMCMGCSqGSIb3DQEJFTEWBBSiHQuMclY+yip4/Evo2FLfYaq7FzArBgkqhkiG9w0BCRQxHh4cAFYAZQByAGkAZABpAHUAbQBDAGwAaQBlAG4AdAAAAAAAADCABgkqhkiG9w0BBwaggDCAAgEAMIAGCSqGSIb3DQEHATApBgoqhkiG9w0BDAEGMBsEFHNg1Ee3UdVBzohOcSRIMEtbbnK+AgMAyACggASCA+h4k4szBqMB5gC40iRFUdJziQdj9WgSFeqUfaEUSXvdWRUZpOr+8mY5HSgLqi70adpxRBs/VTwPk/5hmx7RQAJGjN+s28YAUpff7SlN4FCoBv5YowMqH//hgvE8pyS8jYHcJbVidmGkuh5QBJOs4mjPBhCDzs8Fe/nrrZc4h3FpZq/jaDgOYzhTNo6wxOtVAbGmGNnxY972vHfPbuDDvGe4Srk4/WXowYoxLwONEzLP1dWb4vIDTlqtawksQJmn6VEVk96JDiQ+uAb2QyZYfxWu74rAQLbWMnEFBNP6yVzCSOuc3Tbx/yLXfUnzoSIaLEqBTRG6uxUm4Yo13ghyL0Ky3XUl8ccT4xaw97Rk80n7aaU7lWoAI0SnB1OGp/3YnXw4eLhQDZxxTanok/a+Wwi8O2b0/KJmm5bglflBj/L9iMO3QWZj0Iciz0lHt3OLeydavpFpQpYk+BOulJy98gZeV4G+lHvz6njCihAIc9ezYQXDRs8AUh3q9gIMELbz0UekZu6eIjLdAJxzOr9S5pvU9S9iAdMJdxpRy4upvMMgxdVR6/52eRJQNZsVpZtbGjvHITb29/nd9RRTsCerbwiCwvBNLMGtozRqYusdEH86j0fc2wkuAQ5CUgECcgx5MIVufEfLKsDpMII9U5OGDOlSL6TFHn4EggPovXw4mqnYAM3+aj6+8P0CFWo4oHMmvv1EdYk7KzxxdllnnvCq9ldjLmGtroHZN9hxEOKSVO+cB1PPoGYcr3pvjq9DXAgbN+sdqUWh7RQTvKwnF2T8gmoaCNmJrXd4R5jfzldxa+RKMKPhfwPLMYwYTzCJgVoSgJ9csp0XdW2tHhIluu5o1VNtNVDFGvCFklNZhitBBdBYBGrkqoy0PzTPIH3xGhOASMT18XPjxl2RrjEqgyqPm2r0ejhteDw1ndTx7b2Smg5zVqXQnyjl+okhIUKbwJRKVKqyRw0LaKlko0AFRD5zHtReGmsKj+K0VNznq1pVf3MxCKq23Y7MCrvEgHYu/uAcXfTVyJZjW6lxZhGqh2Pvu/uescW/mnANJ6/KmDwrsETOgjl1hMPDmKkKJH47Epib+3/3wfA4Y5c7pYNJQgLzlIWIknb7P+Qn9LoUy+UrvR6ST8fMMyVz5ayxtCEKRjGZo3Ev9FrtZn7OBfP+KE6IGJORXbJ+uSbUx/A+UUcx1OOMuhrkz3WAPKLpYgdvFS4B5oBTJ5nQ02SyJ3mF97yi28YekcKw5MTdGnMeY9QN3cV+pE0Ii4QNzPV6y3fQHHEEYY7bKlJc1WkizpFwIYy0e/fBUOxgxQlqGHuFm7BIvZrX4imLKD5yUVDBlmH7vwSCA+h25O7mWavxalIgHLyrBabc2XQknjI52NCKT7gQlD1o44VgQo/4uyNbht3qYLvuGm9AExyQ647hUdvmXg+eKJyfLXnJcq313IQvezvh7TH/2rKK6ME6liHhY+avPCRAGV/maQ8fCgCAAadV5oXXF8pgh5AtkdXeH/xpJIIlioNoFX+dsgLMmUmODzXt4BbHSBDAQYBnEsL53fjvVksjZ0KUZk5P39lQHI7z6fpE1jmX6imRNP1rKTI1vIKmzzR2GTaNGLLR9zljfiNzF/ww5jXtHwjJjsgdvrFz8dPM1t6UCNsW/UrhBND1HorcsCT3j5JzwuWVMSbuzQibkD73I+ROjFZQu1a5AO9NTM9wr5wJeRoTF+fPTaOMdUGeb/2HbJ4kz2PgCvFT5dqjL1k6h1gt0bnwoXrnct7d4S8dar/XQCTu5qhszIhOW/vsopDdlG6HZG0wbNBVm+ytLN63W+wsc/wAxJCxYx2XeBMoFPUySXgrC3E8lm7xOhYNKEAYiacWKvzhobeI/ubRe8bRvRa0h9yKB0v6llTnhqKtKFgjMfu2odTiO1xuQY8D3itTm3zqXx+lrHi5hkhLMIhAAJzbAgkUhnkggyQzE2BHz7M1uizFCWwLXhGswMPphJNv7mM+VcN0ZunrkqNTEGdXsyA1hQSCA+iEI+rbYc6831JBMLw+jmjf2Y7KEPwgUCXKQFdIumTiT/srC79o6H3e9gB0Lhw0WiVFOHomFYNFKLJsON78HjMWCKg+X25ct/bcEvU163+mc16T+0UQLVk4rNpppg02MW8EWAddecAlcgs3wn79axhbtCdRFqv+6EIpUu4ca4hq45bnCbc10hVHk5PuXGmzyLDcw5np4CLfQjUgRbO85RwY/YwV9nM2HPoOcoh2h8xhZVd+bYdAPr3rh6hrsIntuYZoXdVsUHxqjEiHqKnBWnknQZ9hPfv7gJhFi2VgqVSmTKkP/WSBERGj55blsYbMhqxGdZ97Foe1+O9RLgKB3+VkLH3WJ6A6W+56/FfEENQgsqYBe/ZZTJp4SsH/gcxpqJU/4uSYWbUgvuT2WJZqW2zVf2nk08nWCv02MjTGlvD/AqdPoHiA5alL5ONUod5z4GEnZ60ZQaUBkBEZNUqXPvrZSkCAD/D9f+Q2FMpV0ErE2mdnnAFPZiWEWukaEwsU/T4hE8NhHqPKauKW7Jd0EjeVlYf5bDjUMwOQfyc6Y298MasOAV5dl8VlxoJejSc8edY1Y7nXjiJWlPUeSbMBcjtTIhAiz1JO0N5+FSFg5M8MijnRaJhKCLBkcqVeD67eORvSf5vaB1E26uwXQd5hOfcZs4XI/KQUEASCA+hUvRdG/IgYGf2z3sgTCP7yif48qXTxRo5ojJguPhacJGWr/ZZNbLGMeFEN4ArzxiP1wdpmRPEDwvGf2jzvm/Hf/DKXA8lEc5XMTmD/fjTrkDv27bSLdlzd0aQEcEvELxEbgyXLeWyqvYj6CoQ6QwlFzn31cOHTQL3jbhdJkFzCWc+wPSgPTB/PZEgmiO8Go3ZQo01TGaSsQj2isz2L8MaAITgebKVlIW+0ifEFpEGA5zt7mMz2nTrMSkFmCcKG+AgDCe2tZTfi3eZqPqg1ggoV/TNVTjI4mWISUN3qKqXr2vbdSzHkQ30FbYGeYexynMnzg1807iraAQS0PqSo/5nywBsFbyiiLYxf0a753NVoi90m8RtpWsmZl5wY15lyKyQrNGbE4KLmZGbQH+Z2ae2+4dKvJfMkENsjhMqNLFfw+7twAUNn/San6GxLxIxc5+cy4WYoUYvoNZ5ikR62op2DDGhinwWxL+z9ewtyvOSMP/9Qzhc5cfs4UZfm4wLtBptVOinRDqf3PO/wX3D2hM9e9NPUxm0vVz+O3q433iCYko4Rmzs7LtEdZM2JgxvfGhM5DGSu9PbA5Ht9Hd5dPDfI4Qb9Y91x2KgcVk+5t7xij6d/A+1pbEIYDDF4NywcR9DdAKKbi0vpXx5RWVI/BIICiiSxfr1KHVvKdYqnZ6E5Yrhu0qDRXWIGgZGeCBiJZjW3888nnTnclCdxqGioN82M+EeWoFEjhAjx8oUzTPn46+bOndIlJaUQt8gMaAS8ABWj3wlcVRWfFzTHpkJzBAOMA4qytcipYZ0zJx7HHAB9BJCapgBAemL+2saiJMZZ+Axk3i6SG2qb8mbftKmfs1SEXFJ2JZFjRJByDHeFuNwcFefcUvx3x1G8Wfga/msTYbzIFuUMzf0cMSDFwTJbWy3M4uVl8a4O0EcljHfrr0/CDOUNoskJP8f4UWCJWVx+UR0/n3czOvcOsF0nSbl7YgHnr1M3xmRgG9ecA+I3PFyWucyPO93aqEPIUtPC1dVILAZCgxGlKfomdZMkE3YBuIQ74jBkimLWysZvYc6+LiYsR5Ap/GwKajrQELPzJ7ss94COkCQzi2vr2w3GylPIy/IYZ4N/gBhoFgJSlVhvlXM89p3WHtqNQ500CbqnnnEG0YiJ1HkdgqfIakknfPDLJ+0aNL5x+vX87iZMwXRgdVQ8x18DPhocQunlOGZDEXyDeyI8MO7kf9LigMgWW9GN5isSlT5pcX31st3Pcqg7of00b/bMUwQK9phvu3whWWNzpeP/k7JJg31zFbyI6mNlwFC+lWBH+YK4rFh2CVZvy8g5Csoqyzl65+UDuPOTQQSBgCrUu0oeQu6Z6/giwIr346XeC2bOlb8UELtkgEHkUINOeKiqNBmShJZrBhom1BDsKfNaHolN7aNmw9BBvzl4XNFdz0KorL8yQ3NfemjZmhuyrDFIT/hGhdMZnvtJxmOAbyFGXClakR742SGiyMPgXpcAOBSCY1VI/kQ7ALz2OCJmAAAAAAAAAAAAAAAAAAAAAAAAMD4wITAJBgUrDgMCGgUABBSV0/UzZ18JZQMS0UedBXjIJpZCswQUucn0V5wR5TIjh1x6IXo20xEHxQQCAwGQAAAA",
"certificatePassword": "a517a029-9e96-4978-9346-844fec6bd721"
}
}
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
./automation-testing-runner
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
#or
#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 :
user1@client.com
user2@client.com
00003@client.com
#example for file called user_lt1000:
00001@client.com
examples:
## START REGISTRATION OF USERS
nohup ./automation-testing-runner --service-name local --env-file envfile.json --tags @mobile-device-enrolment --periodic 0 --usernames-file users.txt --tasks 50 &
## START SSP SESSIONS
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
./stopTests.sh
##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
Enrollment:
@mobile-device-enrolment : required for each user
@cp-device-enrolment : one time for any tested user
Login
@saml-login-qr : qr authentication with mobile biometrics
@cp-login-qr
@saml-login-ldap
@saml-login-ldap-qr : first ldap, then qr authentication with mobile biometrics
@cp-login-ldap-qr
Enrollment + login
@mobile-device-enrolment-and-saml-login : one enrollment + one login
@cp-enrolment-and-qr-mobile-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:
cqlsh
## 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
/DEFAULT_JVM_OPTS
-Dtrust_all_cert=true
Enable debug logs of all http requests and responses done by BDD clients:
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">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- 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" />
</File>
</Appenders>
<Loggers>
<Logger name="com.veridiumid.automation.httpclient" level="debug">
<AppenderRef ref="CONSOLE"/>
<AppenderRef ref="File" />
</Logger>
<Logger name="com.datastax.oss.driver.internal.core" level="OFF"/>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
Add this file to JVM options:
export JAVA_OPTS=$JAVA_OPTS:-Dlog4j.configurationFile=log4j2.xml