summaryrefslogtreecommitdiffstats
path: root/docs/submodules/integration
.. This work is licensed under a
.. Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. _pap-s3p-label:

.. toctree::
   :maxdepth: 2

Policy PAP component
~~~~~~~~~~~~~~~~~~~~

Both the Performance and the Stability tests were executed by performing requests
against Policy components installed as part of a full ONAP OOM deployment in Nordix lab.

Setup Details
+++++++++++++

- Policy-PAP along with all policy components deployed as part of a full ONAP OOM deployment.
- A second instance of APEX-PDP is spun up in the setup. Update the configuration file(OnapPfConfig.json) such that the PDP can register to the new group created by PAP in the tests.
- Both tests were run via jMeter, which was installed on a separate VM.

Stability Test of PAP
+++++++++++++++++++++

Test Plan
---------
The 72 hours stability test ran the following steps sequentially in a single threaded loop.

- **Create Policy defaultDomain** - creates an operational policy using policy/api component
- **Create Policy sampleDomain** - creates an operational policy using policy/api component
- **Check Health** - checks the health status of pap
- **Check Statistics** - checks the statistics of pap
- **Change state to ACTIVE** - changes the state of defaultGroup PdpGroup to ACTIVE
- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that PdpGroup is in the ACTIVE state.
- **Deploy defaultDomain Policy** - deploys the policy defaultDomain in the existing PdpGroup
- **Create/Update PDP Group** - creates a new PDPGroup named sampleGroup.
- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that 2 PdpGroups are in the ACTIVE state and defaultGroup has a policy deployed on it.
- **Deployment Update sampleDomain** - deploys the policy sampleDomain in sampleGroup PdpGroup using pap api
- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that the defaultGroup has a policy defaultDomain deployed on it and sampleGroup has policy sampleDomain deployed on it.
- **Check Consolidated Health** - checks the consolidated health status of all policy components.
- **Check Deployed Policies** - checks for all the deployed policies using pap api.
- **Undeploy Policy sampleDomain** - undeploys the policy sampleDomain from sampleGroup PdpGroup using pap api
- **Undeploy Default Policy** - undeploys the policy defaultDomain from PdpGroup
- **Change state to PASSIVE(sampleGroup)** - changes the state of sampleGroup PdpGroup to PASSIVE
- **Delete PdpGroup SampleGroup** - delete the sampleGroup PdpGroup using pap api
- **Change State to PASSIVE(defaultGroup)** - changes the state of defaultGroup PdpGroup to PASSIVE
- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that PdpGroup is in the PASSIVE state.
- **Delete Policy defaultDomain** - deletes the operational policy defaultDomain using policy/api component
- **Delete Policy sampleDomain** - deletes the operational policy sampleDomain using policy/api component

The following steps can be used to configure the parameters of test plan.

- **HTTP Authorization Manager** - used to store user/password authentication details.
- **HTTP Header Manager** - used to store headers which will be used for making HTTP requests.
- **User Defined Variables** -  used to store following user defined parameters.

===========   ===================================================================
 **Name**      **Description**
===========   ===================================================================
 PAP_HOST      IP Address or host name of PAP component
 PAP_PORT      Port number of PAP for making REST API calls
 API_HOST      IP Address or host name of API component
 API_PORT      Port number of API for making REST API calls
===========   ===================================================================

The test was run in the background via "nohup", to prevent it from being interrupted:

.. code-block:: bash

    nohup ./jMeter/apache-jmeter-5.3/bin/jmeter.sh -n -t stability.jmx -l testresults.jtl

Test Results
------------

**Summary**

Stability test plan was triggered for 72 hours.

.. Note::

              .. container:: paragraph

                  As part of the OOM deployment, another APEX-PDP pod is spun up with the pdpGroup name specified as 'sampleGroup'.
                  After creating the new group called 'sampleGroup' as part of the test, a time delay of 2 minutes is added,
                  so that the pdp is registered to the newly created group.
                  This has  resulted in a spike in the Average time taken per request. But, this is required to make proper assertions,
                  and also for the consolidated health check.

**Test Statistics**

=======================  =================  ==================  ==================================
**Total # of requests**  **Success %**      **Error %**         **Average time taken per request**
=======================  =================  ==================  ==================================
35059                    99.99 %            0.01 %              354 ms
=======================  =================  ==================  ==================================

.. Note::

              .. container:: paragraph

                  There were only 3 failures during the 72 hours test, and all these 3 happened because the 2nd PDP instance didn't
                  get registered in time to the new group created, and as a result, the PdpGroup Query failed. This can be ignored,
                  as it was only a matter of one missing heartbeat over a period of 24 hours.

**JMeter Screenshot**

.. image:: images/pap-s3p-jm-stability.JPG

**Memory and CPU usage**

The memory and CPU usage can be monitored by running "top" command on the PAP pod. A snapshot is taken before and after test execution to monitor the changes in resource utilization.

Memory and CPU usage before test execution:

.. image:: images/pap-s3p-top-before.JPG

Memory and CPU usage after test execution:

.. image:: images/pap-s3p-top-after.JPG

The CPU and memory usage by the PAP pod is consistent over the period of 72 hours test execution.

Performance Test of PAP
++++++++++++++++++++++++

Introduction
------------

Performance test of PAP has the goal of testing the min/avg/max processing time and rest call throughput for all the requests with multiple requests at the same time.

Setup Details
-------------

The performance test is performed on a similar setup as Stability test. The JMeter VM will be sending a large number of REST requests to the PAP component and collecting the statistics.


Test Plan
---------

Performance test plan is the same as the stability test plan above except for the few differences listed below.

- Increase the number of threads up to 5 (simulating 5 users' behaviours at the same time).
- Reduce the test time to 2 hours.
- Usage of counters to create different groups by the 'Create/Update PDP Group' test case.
- Removed the delay to wait for the new PDP to be registered. Also removed the corresponding assertions where the Pdp instance registration to the newly created group is validated.

Run Test
--------

Running/Triggering the performance test will be the same as the stability test. That is, launch JMeter pointing to corresponding *.jmx* test plan. The *API_HOST* , *API_PORT* , *PAP_HOST* , *PAP_PORT* are already set up in *.jmx*.

.. code-block:: bash

    nohup ./jMeter/apache-jmeter-5.3/bin/jmeter.sh -n -t perf.jmx -l perftestresults.jtl

Once the test execution is completed, execute the below script to get the statistics:

.. code-block:: bash

    $ cd /home/ubuntu/pap/testsuites/performance/src/main/resources/testplans
    $ ./results.sh /home/ubuntu/pap_perf/resultTree.log

Test Results
------------

Test results are shown as below.

**Test Statistics**

=======================  =================  ==================  ==================================  =======================
**Total # of requests**  **Success %**      **Error %**         **Average time taken per request**  **Requests/sec**
=======================  =================  ==================  ==================================  =======================
44293                    100 %              0.00 %              943 ms                              8858
=======================  =================  ==================  ==================================  =======================

**JMeter Screenshot**

.. image:: images/pap-s3p-jm-performance.JPG
AgeCommit message (Collapse)AuthorFilesLines
2019-05-03Update git submodulesYang Xu1-0/+0
* Update docs/submodules/integration/benchmark.git from branch 'master' to 12db7aaabe48d58ad9ff3acdfa71b9d0d099b08a - LF asked to remove files with proprietary license Change-Id: Ie89892dfbbbfa830d3cc1e3f8aa5750865e703fb Issue-ID: INT-1059 Signed-off-by: Yang Xu <yang.xu3@huawei.com>
2019-04-09Update git submodulesPawel Wieczorek1-0/+0
* Update docs/submodules/integration/devtool.git from branch 'master' to f0f1a644ee5c8da2ee35cb78b8db67e3838121cb - Synchronize Vagrant version between doc and script Environment preparation script (tools/setup.sh) installs Vagrant 2.2.3, while documentation recommends version 2.0.1. Issue-ID: DOC-420 Change-Id: I9aefc8db2bacacab88a010c587b72a259e550ac8 Signed-off-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
2019-01-18Updated git submodulesGary Wu1-0/+0
Project: integration/devtool master 07c12b82b1b23d9c824a46e9c861f79ee5a6867c Merge "Deprecate trusty support" Deprecate trusty support Trusty libvirt boxes have issues to setup the IP address during the provisioning process. This change deprecates the usage of Vagrant Trusty boxes in favor to Xenail. Change-Id: I74c0e77c9812c31ff7504c16f8538f9293b7f3f6 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-478
2019-01-18Updated git submodulesGary Wu1-0/+0
Project: integration/devtool master dbe461f185aeed76c1a63b5302ff9b0f20952df6 Merge "Enable statd service" Enable statd service NFS uses rpc-statd service to provide locks. These service needs to be started separately. This fix enables that service to prevents 'no locks available' message errors. Change-Id: I4c94cea9fe00a03fd2f06f170f216aafd081818c Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-478
2019-01-18Updated git submodulesGary Wu1-0/+0
Project: integration/devtool master 9f47d24dbb3852852a1ec73c8a987a67ff38a2dc Merge "Update AAI script" Update AAI script The way to configure the AAI environment in standalone mode has been change in Casablanca release[1]. Now this project now uses JanusGraph database instead of Titan. This change pretends to reflect those changes offering a single line command to provision an environment. $ ./tools/run.sh aai [1] https://wiki.onap.org/display/DW/AAI+Developer+Environment+Setup+-+Casablanca Change-Id: I222d98d4a158d94dca8d07bec1430cebab072b89 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-470
2019-01-15Updated git submodulesVictor Morales1
0f8e623b9d6f3c4f52fc822e Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-478 2018-04-16Updated git submodulesVictor Morales1-0/+0 Project: integration/devtool master 8be83219fd8fc9983ac90a700b25c35555f45c49 Update AAI script The get_aai_images function was not reflecting the latest changes to build and retrieve AAI images, as consequence the deployment of their services fails. This change also includes the installation of go and its tools. Change-Id: Ic14da77078459c0f63ba517c36c0dcd1cfca64e8 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-470 2018-04-10Updated git submodulesGary Wu1-0/+0 Project: integration/devtool master 11815c2b45224455643c8cb08f9d524fabc7ac92 Merge "Update all-in-one PowerShell arg value" Update all-in-one PowerShell arg value The *all-in-one* was updated for shell scripts in I599d68c91e4c6e614aa884fe7c305b64bbf88e91 but it was missed the change for PowerShell scripts. This change expands that fix. Change-Id: I23f1251a4dabc9343be756a2c037edde63f32029 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-460 2018-04-10Updated git submodulesVictor Morales1-0/+0 Project: integration/devtool master 80633ad073cdb925b2d76ba6f7b79cb071ba2354 Move install_* functions The install_* functions can be controlled better in a separate script file. This change moves them into a _installers script. Change-Id: I7c7993d44478e5d311b425ecbaf712154dd97bd3 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: INT-463 2018-04-05Updated git submodulesVictor Morales1-0/+0 Project: integration/devtool master ef7b4aca7e3b9fe06bdaa4a9e979bdb02d85a674 Rename doc folder The Jenkins job that triggers the creation of documents looks for docs folder[1], in order to be covered by this job it's necessary to adapt to this convention. [1] https://git.onap.org/ci-management/tree/jjb/doc/doc-templates-rtd.yaml Change-Id: Ieca92084d95b0ef4736223b1ea60cb0f9c688550 Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: DOC-261 2018-04-05Updated git submodulesYang Xu1-0/+0 Project: integration/devtool master 410ba49a479bf6be3cbe3dddff2e8047e7967f3c Merge "Rename robot docker from openecomp to onap" Rename robot docker from openecomp to onap Change-Id: I0279eff6b0819f14156a8217716240c80aefe89e Issue-ID: INT-459 Signed-off-by: Gary Wu <gary.i.wu@huawei.com> 2018-04-04Updated git submodulesNate Potter1-0/+0 Project: integration/devtool master efe77c01bdceac8902b91f20cae6c5670db33a84 Fix all-in-one vagrant machine name Currently when inputting the command for all_in_one, vagrant can't find a machine defined for that name because it's looking for a machine called all-in-one. This patch updates the name of the VM in run.sh to all-in-one. Change-Id: I599d68c91e4c6e614aa884fe7c305b64bbf88e91 Signed-off-by: Nathaniel Potter <nathaniel.potter@intel.com> Issue-ID: INT-460 2018-04-03Add Devtool projectVictor Morales1-0/+0 Change-Id: I7db8dfd8ccd6b75baf49a8b5e89f7d4ead4461bd Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: DOC-261