.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

Developer-Guide
===============

.. contents::
   :depth: 3
   :local:

.. note:
..   * This section is used to describe what a contributor needs to know in order to work on the componenta

..   * this should be very technical, aimed at people who want to help develop the components

..   * this should be how the component does what it does, not a requirements document of what the component should do

..   * this should contain what language(s) and frameworks are used, with versions

..   * this should contain how to obtain the code, where to look at work items (Jira tickets), how to get started developing

..   * This note must be removed after content has been added.


Testing
-------

API conformance test with ETSI NFV-TST
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`ETSI NFV-TST 010`_ specifies the method of the conformance test for APIs specified by NFV specifications.
ETSI NFV-TST provides test suites called 'api-tests' based on `ETSI NFV-TST 010`_ specification.
The following steps are the procedure of API conformance test according to the specification by using Xtesting.

* Xtesting environment setup

   1. Check out code from smo-o2 repository into /tmp/ directory in your local machine.

      .. code:: bash

         $ cd /tmp
         $ git clone https://gerrit.o-ran-sc.org/r/smo/o2

   2. Create a virtual environment for xtesting in '~/tacker/tacker/tests/' directory.

      .. code:: bash

         $ cd ~/tacker/tacker/tests
         $ mkdir xtesting
         $ cd xtesting
         $ virtualenv xtesting-py3 -p python3

   3. Activate the virtual environment.

      .. code:: bash

         $ . xtesting-py3/bin/activate

   4. Install Xtesting package.

      .. code:: bash

         $ pip install xtesting

   5. Copy 'requirements.txt' from '/tmp/o2/tacker/tacker/tests/xtesting/' to the current directory and install it.

      .. code:: bash

         $ cp /tmp/o2/tacker/tacker/tests/xtesting/requirements.txt .
         $ pip install -r requirements.txt

   6. Check out 'api-tests' repository in ETSI NFV into the current directory.

      .. code:: bash

         $ git clone https://forge.etsi.org/rep/nfv/api-tests.git
         $ cd api-tests
         $ git checkout origin/2.6.1-fix-plu
         $ cd ..

   7. Copy the directories and file under '/tmp/o2/tacker/tacker/tests/xtesting/' to the location under the current directory.

      .. code:: bash

         $ cp -r /tmp/o2/tacker/tacker/tests/xtesting/api-tests/SOL002/cnflcm ./api-tests/SOL002
         $ cp -r /tmp/o2/tacker/tacker/tests/xtesting/api-tests/SOL003/CNFDeployment ./api-tests/SOL003
         $ cp -r /tmp/o2/tacker/tacker/tests/xtesting/api-tests/SOL003/cnflcm ./api-tests/SOL003
         $ cp -r /tmp/o2/tacker/tacker/tests/xtesting/api-tests/SOL005/CNFPrecondition ./api-tests/SOL005
         $ mkdir jsons
         $ cp ./api-tests/SOL003/cnflcm/jsons/* ./jsons

   8. Copy 'testcases.yaml' file from '/tmp/o2/tacker/tacker/tests/xtesting/' directory to the location under the current directory.

      .. code:: bash

         $ cp /tmp/o2/tacker/tacker/tests/xtesting/testcases.yaml ./xtesting-py3/lib/python3.8/site-packages/xtesting/ci/

      .. note::

         If user is working in other directory than '/opt/stack/', then the path specified in 'suites' parameter in 'testcases.yaml' needs to be updated to the actual one.

   9. Give permissions to 'api-tests' directory.

      .. code:: bash

         $ sudo chmod -R 775 api-tests

   10. Update 'VNFM_SCHEMA', 'VNFM_PORT', 'VNFM_HOST', 'PODS_SCHEMA', 'PODS_PORT' and 'PODS_HOST' variables in below files with appropriate Request Type (http or https), Port and Host.

      .. code:: bash

         $ vi api-tests/SOL003/CNFDeployment/environment/variables.txt

   11. Copy necessary files under api-tests directory into the designated location.

      .. code:: bash

         $ cp ./api-tests/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json ./jsons
         $ cp ./api-tests/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json ./jsons/healVnfcRequest.json
         $ mkdir schemas
         $ cp ./api-tests/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json ./schemas

* Preconditioning for test execution

   1. If there is no 'nfv_user' and 'nfv' project, create them in your local environment.

      .. code:: bash

         $ source ${devstack_dir}/openrc admin admin
         $ openstack project create --domain default nfv
         $ openstack user create --domain default --project nfv --password devstack nfv_user
         $ openstack role add --project nfv --user nfv_user admin
         $ source ${devstack_dir}/openrc nfv_user nfv

   2. Register Kubernetes VIM and create an executable environment for Helm CLI from steps mentioned in below link.

      * https://docs.o-ran-sc.org/projects/o-ran-sc-smo-o2/en/latest/tacker-user-guide-cnf.html

   3. Install 'dos2unix' and 'jq'.

      .. code:: bash

         $ sudo apt-get install dos2unix
         $ sudo apt install jq

   4. Execute script 'packageTest.sh' for package creation and uploading.

      .. code:: bash

         $ cd ~/tacker/tacker/tests/xtesting/api-tests/SOL005/CNFPrecondition
         $ ./packageTest.sh

   5. Get 'vnfdId' and change it in the file 'createVnfRequest.json' as below.

     .. code:: bash

         $ openstack vnf package list -c "Id"

           E.g: Output of command

           +--------------------------------------+
           | ID                                   |
           +--------------------------------------+
           | 0ca03e2e-1c51-4696-9baa-36f974185825 |
           +--------------------------------------+

         $ openstack vnf package show 0ca03e2e-1c51-4696-9baa-36f974185825 -c "VNFD ID"

           E.g: Output of command

           +---------+--------------------------------------+
           | Field   | Value                                |
           +---------+--------------------------------------+
           | VNFD ID | 4688aff3-b456-4b07-bca6-089db8aec8b0 |
           +---------+--------------------------------------+

         $ vi ~/tacker/tacker/tests/xtesting/jsons/createVnfRequest.json

           E.g: Content of file

           {
             "vnfdId": "4688aff3-b456-4b07-bca6-089db8aec8b0", # Update value here
             "vnfInstanceName": "",
             "vnfInstanceDescription": "",
             "vnfProvider":"Company",
             "vnfProductName":"Sample CNF",
             "vnfSoftwareVersion":"1.0",
             "vnfdVersion":"1.0",
             "metadata":{}
           }

   6. Get 'vimId' and change it in the file 'instantiateVnfRequest.json' as below.

      .. code:: bash

         $ openstack vim list -c "ID"

           E.g: Output of command

           +--------------------------------------+
           | ID                                   |
           +--------------------------------------+
           | 08260b52-c3f6-47a9-bb1f-cec1f0d3956a |
           +--------------------------------------+

         $ vi ~/tacker/tacker/tests/xtesting/jsons/instantiateVnfRequest.json

           E.g: Content of file

           {
             "flavourId": "helmchart",
             "additionalParams": {
               "namespace": "default",
               "use_helm": "true",
               "using_helm_install_param": [
                 {
                   "exthelmchart": "false",
                   "helmchartfile_path": "Files/kubernetes/localhelm-0.1.0.tgz",
                   "helmreleasename": "tacker-test-vdu"
                 }
               ],
               "helm_replica_values": {
                 "vdu1_aspect": "replicaCount"
               },
               "vdu_mapping": {
                 "VDU1": {
                   "kind": "Deployment",
                   "name": "tacker-test-vdu-localhelm",
                   "helmreleasename": "tacker-test-vdu"
                 }
               }
             },
             "vimConnectionInfo": [
               {
                 "id": "742f1fc7-7f00-417d-85a6-d4e788353181",
                 "vimId": "d7a811a3-e3fb-41a1-a4e2-4dce2209bcfe",  # Update value here
                 "vimType": "kubernetes"
               }
             ]
           }

   7. Start kubectl proxy.

      .. code:: bash

         $ kubectl proxy --port=8080 &

* Testing steps

   1. Verify Vnflcm Create, Instantiate and Heal.

      .. code:: bash

         $ cd ~/tacker/tacker/tests/xtesting/
         $ . xtesting-py3/bin/activate
         $ sudo xtesting-py3/bin/run_tests -t cnf-lcm-validation

   2. Verify getting all pods and getting specific pod.

      .. code:: bash

         $ cd ~/tacker/tacker/tests/xtesting/
         $ . xtesting-py3/bin/activate
         $ sudo xtesting-py3/bin/run_tests -t cnf-deployments-validation

      E.g: Output of command

         .. code:: bash

            2022-12-05 05:10:13,908 - xtesting.core.robotframework - INFO -
            ==============================================================================
            IndividualCnfLcmOperationOccurrence
            ==============================================================================
            Get All Pods :: Test ID: 7.3.1.12.7 Test title: Get All Pods Test ... | PASS |
            ------------------------------------------------------------------------------
            Get Specific Pod :: Test ID: 7.3.1.12.8 Test title: Get Specific P... | PASS |
            ------------------------------------------------------------------------------
            IndividualCnfLcmOperationOccurrence                                   | PASS |
            2 tests, 2 passed, 0 failed
            ==============================================================================
            Output:  /var/lib/xtesting/results/cnf-deployments-validation/output.xml

            2022-12-05 05:10:13,913 - xtesting.core.robotframework - INFO - Results were successfully parsed
            2022-12-05 05:10:13,968 - xtesting.core.robotframework - INFO - Results were successfully generated
            2022-12-05 05:10:13,969 - xtesting.ci.run_tests - INFO - Test result:

            +-------------------------------+-----------------+------------------+----------------+
            |           TEST CASE           |     PROJECT     |     DURATION     |     RESULT     |
            +-------------------------------+-----------------+------------------+----------------+
            |   cnf-deployments-validation  |       smo       |      00:01       |      PASS      |
            +-------------------------------+-----------------+------------------+----------------+

   3. Revert all the changes in json files for Re-testing.

      .. code:: bash

         $ cp ./api-tests/SOL003/VNFLifecycleManagement-API/jsons/healVnfRequest.json ./jsons/healVnfRequest.json

   4. For Re-testing, user must delete all the VNF instances and packages created in the above test. An example of steps is below.

      .. code:: bash

         $ openstack vnflcm list  -c "ID"

           E.g: Output of command

           +--------------------------------------+
           | ID                                   |
           +--------------------------------------+
           | 6fc3539c-e602-4afa-8e13-962fb5a7d81f |
           +--------------------------------------+

         $ openstack vnflcm terminate 6fc3539c-e602-4afa-8e13-962fb5a7d81f
         $ openstack vnflcm delete 6fc3539c-e602-4afa-8e13-962fb5a7d81f

         $ openstack vnf package list -c "Id"

           E.g: Output of command

           +--------------------------------------+
           | ID                                   |
           +--------------------------------------+
           | 718b9054-2a7a-4489-a893-f2b2b1794825 |
           +--------------------------------------+

         $ openstack vnf package update --operational-state DISABLED 718b9054-2a7a-4489-a893-f2b2b1794825
         $ openstack vnf package delete 718b9054-2a7a-4489-a893-f2b2b1794825

      .. note::

         In current test, the package name and namespace mentioned in deployment file for "Get Specific Pod" test are "vdu2" and "default".
         If any update in the package with respect to name and namespace, then the name and namespace variables in the file
         '~/tacker/tacker/tests/xtesting/api-tests/SOL003/CNFDeployment/environment/variables.txt' need to be updated accordingly.

.. _ETSI NFV-TST 010: https://www.etsi.org/deliver/etsi_gs/NFV-TST/001_099/010/02.06.01_60/gs_NFV-TST010v020601p.pdf
