summaryrefslogtreecommitdiffstats
path: root/docs/development/devtools/drools-s3p.rst
blob: 18bd489844f149335daf4ced9df17357cc5e1450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
.. This work is licensed under a
.. Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. _drools-s3p-label:

.. toctree::
   :maxdepth: 2

Policy Drools PDP component
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Both the Performance and the Stability tests were executed against a default ONAP installation in the policy-k8s tenant in the windriver lab, from an independent VM running the jmeter tool to inject the load.

General Setup
*************

The kubernetes installation allocated all policy components in the same worker node VM and some additional ones.
The worker VM hosting the policy components has the following spec:

- 16GB RAM
- 8 VCPU
- 160GB Ephemeral Disk

The standalone VM designated to run jmeter has the same configuration.  The jmeter JVM
was instantiated with a max heap configuration of 12G.

Other ONAP components used during the stability tests are:

- Policy XACML PDP to process guard queries for each transaction.
- DMaaP to carry PDP-D and jmeter initiated traffic to complete transactions.
- Policy API to create (and delete at the end of the tests) policies for each
  scenario under test.
- Policy PAP to deploy (and undeploy at the end of the tests) policies for each scenario under test.

The following components are simulated during the tests.

- SO actor for the vDNS use case.
- APPC responses for the vCPE and vFW use cases.
- AAI to answer queries for the use cases under test.

In order to avoid interferences with the APPC component while running the tests,
the APPC component was disabled.

SO, and AAI actors were simulated within the PDP-D JVM by enabling the
feature-controlloop-utils before running the tests.

PDP-D Setup
***********

The kubernetes charts were modified previous to the installation with
the changes below.

The feature-controlloop-utils was started by adding the following script:

.. code-block:: bash

    oom/kubernetes/policy/charts/drools/resources/configmaps/features.pre.sh:

    #!/bin/bash
    bash -c "features enable controlloop-utils"

Stability Test of Policy PDP-D
******************************

The 72 hour stability test happened in parallel with the stability run of the API component.

Worker Node performance
=======================

The VM named onap-k8s-09 was monitored for the duration of the 72 hours
stability run.  The table below show the usage ranges:

.. code-block:: bash

    NAME          CPU(cores)   CPU%
    onap-k8s-09   <=1214m      <=20%

PDP-D performance
=================

The test set focused on the following use cases:

- vCPE
- vDNS
- vFirewall

For 72 hours the following 5 scenarios ran in parallel:

- vCPE success scenario
- vCPE failure scenario (failure returned by simulated APPC recipient through DMaaP).
- vDNS success scenario.
- vDNS failure scenario.
- vFirewall success scenario.

Five threads ran in parallel, one for each scenario.   The transactions were initiated
by each jmeter thread group.   Each thread initiated a transaction, monitored the transaction, and
as soon as the transaction ending was detected, it initiated the next one, so back to back with no
pauses.

All transactions completed successfully as it was expected in each scenario, with no failures.

The command executed was

.. code-block:: bash

    ./jmeter -n -t /home/ubuntu/drools-applications/testsuites/stability/src/main/resources/frankfurt/s3p.jmx  -l /home/ubuntu/jmeter_result/jmeter.jtl -e -o /home/ubuntu/jmeter_result > /dev/null 2>&1

The results were computed by taking the ellapsed time from the audit.log
(this log reports all end to end transactions, marking the start, end, and
ellapsed times).

The count reflects the number of successful transactions as expected in the
use case, as well as the average, standard deviation, and max/min.   An histogram
of the response times have been added as a visual indication on the most common
transaction times.

vCPE Success scenario
=====================

ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e:

.. code-block:: bash

    Max: 4323 ms, Min: 143 ms, Average: 380 ms [samples taken for average: 260628]

.. image:: images/ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e.png


vCPE Failure scenario
=====================

ControlLoop-vCPE-Fail:

.. code-block:: bash

   Max: 3723 ms, Min: 148 ms, Average: 671 ms [samples taken for average: 87888]

.. image:: images/ControlLoop-vCPE-Fail.png

vDNS Success scenario
=====================

ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3:

.. code-block:: bash

   Max: 6437 ms, Min: 19 ms, Average: 165 ms [samples taken for average: 59259]

.. image:: images/ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3.png

vDNS Failure scenario
=====================

ControlLoop-vDNS-Fail:

.. code-block:: bash

    Max: 1176 ms, Min: 4 ms, Average: 5 ms [samples taken for average: 340810]

.. image:: images/ControlLoop-vDNS-Fail.png

vFirewall Success scenario
==========================

ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a:

.. code-block:: bash

    Max: 4016 ms, Min: 177 ms, Average: 644 ms [samples taken for average: 36460]

.. image:: images/ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a.png
</configuration> </execution> <execution> <id>create-bundle-parent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../bundle-parent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/bundle-parent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-feature-repo-parent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../feature-repo-parent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/feature-repo-parent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-karaf4-parent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../karaf4-parent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/karaf4-parent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-mdsal-it-parent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../mdsal-it-parent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/mdsal-it-parent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-odlparent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../odlparent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/odlparent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-odlparent-lite-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../odlparent-lite</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/odlparent-lite.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> <execution> <id>create-single-feature-parent-pom</id> <goals> <goal>copy-resources</goal> </goals><!-- here the phase you need --> <phase>validate</phase> <configuration> <outputDirectory>../single-feature-parent</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>pom-template.xml</include> </includes> <filtering>true</filtering> </resource> </resources> <escapeString>\</escapeString> <filters> <filter>${basedir}/src/main/properties/single-feature-parent.properties</filter> </filters> <encoding>UTF-8</encoding> </configuration> </execution> </executions> </plugin> <plugin> <groupId>com.coderplus.maven.plugins</groupId> <artifactId>copy-rename-maven-plugin</artifactId> <version>1.0.1</version> <executions> <execution> <id>rename-binding-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../binding-parent/pom-template.xml</sourceFile> <destinationFile>../binding-parent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-bundle-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../bundle-parent/pom-template.xml</sourceFile> <destinationFile>../bundle-parent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-feature-repo-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../feature-repo-parent/pom-template.xml</sourceFile> <destinationFile>../feature-repo-parent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-karaf4-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../karaf4-parent/pom-template.xml</sourceFile> <destinationFile>../karaf4-parent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-mdsal-it-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../mdsal-it-parent/pom-template.xml</sourceFile> <destinationFile>../mdsal-it-parent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-odlparent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../odlparent/pom-template.xml</sourceFile> <destinationFile>../odlparent/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-odlparent-lite-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../odlparent-lite/pom-template.xml</sourceFile> <destinationFile>../odlparent-lite/pom.xml</destinationFile> </configuration> </execution> <execution> <id>rename-single-feature-parent-pom</id> <phase>validate</phase> <goals> <goal>rename</goal> </goals> <configuration> <sourceFile>../single-feature-parent/pom-template.xml</sourceFile> <destinationFile>../single-feature-parent/pom.xml</destinationFile> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>