0- This process requires 2 VMs. Both VMs should be accessible from each other. Here we'll provide instructions for VM1 setup and then on VM2 setup.
1- Install the basic packages on VM1 and VM2.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$ sudo apt-get update
$ sudo apt-get install -y openjdk-8-jdk docker docker-compose zip unzip curl wget ssh telnet maven
# make sure docker can be launched with normal user
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ newgrp docker |
Policy API VM Setup: VM1
2- Download and build policy API and its docker image.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$ cd ~/
$ git clone https://gerrit.onap.org/r/oparent
$ cd oparent/
$ cp settings.xml ~/.m2/
$ mvn clean install
$ cd ../
$ git clone https://gerrit.onap.org/r/policy/parent
$ cd parent/
$ mvn clean install
$ cd ../
$ git clone https://gerrit.onap.org/r/policy/pap
$ cd pap/
$ mvn clean install -Pdocker
|
3- Check if the images are indeed built and then run the docker image.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf5f76a3c8f2 onap/policy-pap:2.0.0-SNAPSHOT-latest "bash ./policy-pap.sh" 2 minutes ago Up 2 minutes 0.0.0.0:6969->6969/tcp policy-api
# Run policy-pap container
docker run -d --name policy-pap -p 6969:6969 -it onap/policy-pap:2.0.0-SNAPSHOT-latest
|
5- Check health status of the API service with following command:
Code Block | ||||
---|---|---|---|---|
| ||||
$ curl --user healthcheck:zb\!XztG34 -H “Accept=application/json, Content-Type=application/json” -k https://127.0.0.1:6969/healthcheck
Content-Type=application
{"name":"Policy PAP","url":"self","healthy":true,"code":200,"message":"alive" |
6- Check for statistics API with Sample Output
Code Block | ||||
---|---|---|---|---|
| ||||
$ curl --user healthcheck:zb\!XztG34 -H “Accept=application/json, Content-Type=application/json” -k https://127.0.0.1:6969/statistics
Content-Type=application
{"code":200,"totalPdpCount":0,"totalPdpGroupCount":0,"totalPolicyDeployCount":0,"policyDeploySuccessCount":0,"policyDeployFailureCount":0,"totalPolicyDownloadCount":0,"policyDownloadSuccessCount":0,"policyDownloadFailureCount":0} |
JMeter VM Setup: VM2
7- Install JMeter on VM2.
Code Block | ||||
---|---|---|---|---|
| ||||
$ cd ~/
$ wget http://mirrors.whoishostingthis.com/apache//jmeter/binaries/apache-jmeter-5.0.zip
$ unzip apache-jmeter-5.0.zip |
8- Run JMeter Stability Tests.
Jduration is time in seconds to run the tests.
Jusers is the number of threads to be started.
Results of the run are stored in stability.log file.
To check for any failures search for any "failed"/"Failed" message.
...
language | bash |
---|---|
title | Stability Tests |
...
Introduction
The 72 hour Stability Test for PAP has the goal of introducing a steady flow of transactions initiated from a test client server running JMeter for the duration of 72 hours.
Setup details
The stability test is performed on VM's running in OpenStack cloud environment.
There are 2 seperate VM's, one for running PAP & other one for running JMeter to simulate steady flow of transactions.
All the dependencies like dmaap simulator, pdp simulator & policy/api component are installed in the VM having JMeter.
OpenStack environment details
Version: Mitaka
PAP VM details
OS:Ubuntu 16.04 LTS
CPU: 4 core
RAM: 4 GB
HardDisk: 40 GB
Docker Version: 18.09.6
Java: openjdk version "1.8.0_212"
JMeter VM details
OS: Ubuntu 16.04 LTS
CPU: 4 core
RAM: 4 GB
HardDisk: 40 GB
Docker Version: 18.09.6
Java: openjdk version "1.8.0_212"
JMeter: 5.1.1
Install JMeter in virtual machine
Update the ubuntu software installer
Code Block |
---|
apt-get update |
Check & Install Java
|
Download & install JMeter
|
Run JMeter
|
The above command will load the JMeter UI. Then navigate to File → Open → Browse and select the test plan jmx file to open. The jmx file is present in the apex-pdp git repository - jmx file path
Install apex-pdp in virtual machine
We will be running apex-pdp as docker container. So we need to first install docker and then create the container hosting apex-pdp by pulling the image from ONAP repository.
Docker Installation
Make the etc/hosts entries
echo
$(
hostname
-I |
cut
-d\ -f1) $(
hostname
) |
sudo
tee
-a
/etc/hosts
Make the DNS entries
echo
"nameserver <PrimaryDNSIPIP>"
>>
/etc/resolvconf/resolv
.conf.d
/head
echo
"nameserver <SecondaryDNSIP>"
>>
/etc/resolvconf/resolv
.conf.d
/head
resolvconf -u
Update the ubuntu software installer
apt-get update
Check and Install Java
apt-get
install
-y openjdk-8-jdk
java -version
Ensure that the Java version that is executing is OpenJDK version 8
Check and install docker
curl -fsSL https:
//download
.docker.com
/linux/ubuntu/gpg
|
sudo
apt-key add -
add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-cache policy docker-ce
apt-get
install
-y docker-ce
systemctl status docker
docker
ps
Change the permissions of the Docker socket file
chmod
777
/var/run/docker
.sock
Check the status of the Docker service and ensure it is running correctly
service docker status
docker
ps
Install apex-pdp
Run the below command to create the container hosting apex-pdp by pulling the image from ONAP repository.
docker run -d --name apex -p 12561:12561 -p 23324:23324 -it nexus3.onap.org:10001
/onap/policy-apex-pdp
:2.0-SNAPSHOT-latest
/bin/bash
-c
"/opt/app/policy/apex-pdp/bin/apexEngine.sh -c /opt/app/policy/apex-pdp/examples/config/SampleDomain/RESTServerJsonEvent.json"
docker
ps
Note: If you observe that requests from JMeter client is failing due to timeout, then modify the "RESTServerJsonEvent.json" mentioned in the above command and increase the "synchronousTimeout" property as per needed.
Install & Configure VisualVM
VisualVM needs to be installed in the virtual machine having apex-pdp. It will be used to monitor CPU, Memory, GC for apex-pdp while stability test is running.
Install visualVM
|
Login to docker container (using root)
|
Run few commands to configure permissions
|
Login to docker container (using normal user)
|
Run following commands to start jstatd using port 1111
|
Login to VM using graphical interface in separate terminal window.
|
Open visualVM
|
Connect to jstatd & remote apex-pdp JVM
- Right click on "Remote" in the left panel of the screen and select "Add Remote Host..."
Enter the IP address of apex-pdp docker container.
- Right click on IP address, select "Add jstatd Connection..."
- In "jstatd Connections" tab, enter port 1111 and click OK.
- Right click on IP address, select "Add JMX Connection..."
- Enter the apex-pdp docker container IP Address (from step 2) <IP address>:9991 ( for example - 172.18.0.7:9991) and click OK.
- Double click on the newly added nodes under "Remote" to start monitoring CPU, Memory & GC.
Sample Screenshot of visualVM
Test Plan
The 72 hours stability test will run the following steps in 20 threaded loop.
- Send Input Event - sends an input message to rest interface of apex-pdp.
- Assert Response Code - assert the response code coming from apex-pdp.
- Assert Response Message - assert the response message coming from apex-pdp.
The following steps can be used to configure the parameters of test plan.
- HTTP Header Manager - used to store headers which will be used for making HTTP requests.
- HTTP Request Defaults - used to store HTTP request details like Server Name or IP, Port, Protocol etc.
User Defined Variables - used to store following user defined parameters.
Name
Description
Default Value
Name
Description
Default Value
wait Wait time after each request (in milliseconds) 500 threads Number of threads to run test cases in parallel. 20 threadsTimeOutInMs Synchronization timer for threads running in parallel (in milliseconds). 5000
Screenshot of apex-pdp stability test plan