Merge "Documentation changes for PAP S3P testing"
[policy/parent.git] / docs / development / devtools / xacml-s3p.rst
1 .. This work is licensed under a
2 .. Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
4
5 .. _xacml-s3p-label:
6
7 .. toctree::
8    :maxdepth: 2
9
10 ##########################
11
12 Performance Test of Policy XACML PDP
13 ************************************
14
15 The Performance test was executed by performing requests
16 against the Policy RESTful APIs residing on the XACML PDP installed on a Cloud based Virtual Machine.
17
18 VM Configuration:
19 - 16GB RAM
20 - 8 VCPU
21 - 1TB Disk
22
23 ONAP was deployed using a K8s Configuration on a separate VM.
24
25 Summary
26 =======
27
28 The Performance test was executed, and the result analyzed, via:
29
30 .. code-block:: bash
31
32     jmeter -Jduration=1200 -Jusers=10 \
33         -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
34         -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 \
35         -n -t perf.jmx -l testresults.jtl
36
37 Note: the ports listed above correspond to port 6969 of the respective components.
38
39 The performance test, perf.jmx, runs the following, all in parallel:
40
41 - Healthcheck, 10 simultaneous threads
42 - Statistics, 10 simultaneous threads
43 - Decisions, 10 simultaneous threads, each running the following in sequence:
44
45    - Monitoring Decision
46    - Monitoring Decision, abbreviated
47    - Naming Decision
48    - Optimization Decision
49    - Default Guard Decision (always "Permit")
50    - Frequency Limiter Guard Decision
51    - Min/Max Guard Decision
52
53 When the script starts up, it uses policy-api to create, and policy-pap to deploy,
54 the policies that are needed by the test.  It assumes that the "naming" policy has
55 already been created and deployed.  Once the test completes, it undeploys and deletes
56 the policies that it previously created.
57
58 Results
59 =======
60
61 The test was run for 20 minutes at a time, for different numbers of users (i.e.,
62 threads), with the following results:
63
64 .. csv-table::
65    :header: "Number of Users", "Throughput (requests/second)", "Average Latency (ms)"
66
67    10, 8929, 3.10
68    20, 10827, 5.05
69    40, 11800, 9.35
70    80, 11750, 18.62
71
72
73 Stability Test of Policy XACML PDP
74 ************************************
75
76 The stability test was executed by performing requests
77 against the Policy RESTful APIs residing on the XACML PDP installed in the windriver
78 lab.  This was running on a kubernetes pod having the following configuration:
79
80 - 16GB RAM
81 - 8 VCPU
82 - 160GB Disk
83
84 The test was run via jmeter, which was installed on a separate VM so-as not
85 to impact the performance of the XACML-PDP being tested.
86
87 Summary
88 =======
89
90 The stability test was performed on a default ONAP OOM installation in the Intel Wind River Lab environment.
91 JMeter was installed on a separate VM to inject the traffic defined in the
92 `XACML PDP stability script
93 <https://git.onap.org/policy/xacml-pdp/tree/testsuites/stability/src/main/resources/testplans/stability.jmx>`_
94 with the following command:
95
96 .. code-block:: bash
97
98     jmeter.sh -Jduration=259200 -Jusers=2 -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
99         -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 --nongui --testfile stability.jmx
100
101 Note: the ports listed above correspond to port 6969 of the respective components.
102
103 The default log level of the root and org.eclipse.jetty.server.RequestLog loggers in the logback.xml
104 of the XACML PDP
105 (om/kubernetes/policy/components/policy-xacml-pdp/resources/config/logback.xml)
106 was set to ERROR since the OOM installation did not have log rotation enabled of the
107 container logs in the kubernetes worker nodes.
108
109 The stability test, stability.jmx, runs the following, all in parallel:
110
111 - Healthcheck, 2 simultaneous threads
112 - Statistics, 2 simultaneous threads
113 - Decisions, 2 simultaneous threads, each running the following tasks in sequence:
114    - Monitoring Decision
115    - Monitoring Decision, abbreviated
116    - Naming Decision
117    - Optimization Decision
118    - Default Guard Decision (always "Permit")
119    - Frequency Limiter Guard Decision
120    - Min/Max Guard Decision
121
122 When the script starts up, it uses policy-api to create, and policy-pap to deploy
123 the policies that are needed by the test.  It assumes that the "naming" policy has
124 already been created and deployed.  Once the test completes, it undeploys and deletes
125 the policies that it previously created.
126
127 Results
128 =======
129
130 The stability summary results were reported by JMeter with the following summary line:
131
132 .. code-block:: bash
133
134     summary =  207771010 in 72:00:01 =  801.6/s Avg:     6 Min:     0 Max:   411 Err:     0 (0.00%)
135
136 The XACML PDP offered good performance with JMeter for the traffic mix described above, using 801 threads per second
137 to inject the traffic load.   No errors were encountered, and no significant CPU spikes were noted.
138 The average transaction time was 6ms. with a maximum of 411ms.
139