Add xtesting to official ONAP repo
provides the files to build a xtesting-onap-repo docker file
it inherits xtesting capabilities
Issue-ID: INT-499
Change-Id: Ic30d1ef750e9a0ac25b1b1af49fb88d0ba8a64e8
Signed-off-by: mrichomme <morgan.richomme@orange.com>
diff --git a/test/xtesting/robot/Dockerfile b/test/xtesting/robot/Dockerfile
new file mode 100644
index 0000000..5d8d26e
--- /dev/null
+++ b/test/xtesting/robot/Dockerfile
@@ -0,0 +1,26 @@
+FROM opnfv/xtesting
+
+ARG OPENSTACK_TAG=stable/pike
+ARG OPNFV_TAG=master
+ARG ONAP_TAG=master
+
+ENV PYTHONPATH $PYTHONPATH:/src/testing-utils/eteutils
+
+COPY thirdparty-requirements.txt thirdparty-requirements.txt
+RUN apk --no-cache add --virtual .build-deps --update \
+ python-dev build-base linux-headers libffi-dev \
+ openssl-dev libjpeg-turbo-dev && \
+ git clone --depth 1 https://git.onap.org/testsuite -b $ONAP_TAG /var/opt/OpenECOMP_ETE && \
+ git clone --depth 1 https://git.onap.org/testsuite/properties -b $ONAP_TAG /share/config && \
+ git clone --depth 1 https://git.onap.org/testsuite/python-testing-utils -b $ONAP_TAG /src/testing-utils && \
+ pip install \
+ -chttps://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG \
+ -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$OPNFV_TAG \
+ -rthirdparty-requirements.txt \
+ -e /src/testing-utils && \
+ rm -r thirdparty-requirements.txt /src/testing-utils/.git /share/config/.git \
+ /var/opt/OpenECOMP_ETE/.git && \
+ apk del .build-deps
+
+COPY testcases.yaml /usr/lib/python2.7/site-packages/xtesting/ci/testcases.yaml
+CMD ["run_tests", "-t", "all"]
diff --git a/test/xtesting/robot/README.md b/test/xtesting/robot/README.md
new file mode 100644
index 0000000..428cb3f
--- /dev/null
+++ b/test/xtesting/robot/README.md
@@ -0,0 +1,93 @@
+# Xtesting-onap-robot
+Reuse of the Xtesting framework to onboard ONAP robot tests
+It consists in 3 files:
+ * Dockerfile: create your dockerfile. For Beijing, it shall be generated manually. You can use a non official version [4]
+ * testcases.yaml: the list of the testcases based on robotframework tags as defined in ONAp repo [3]
+ * thirdparty-requirements.txt: dependencies needed by the Dockerfile
+
+## Configuration
+
+To launch Xtesting ONAP robot you need 2 files
+ * env
+ * onap.properties: list of ONAP endpoints (can be found on the robot VM). Depending from where you launch the tests,
+please check that the IP addresses are reachable.
+
+As Xtesting supports both Openstack and Kubernetes, the env files shall be set accordingly.
+
+env file
+```
+INSTALLER_TYPE=heat
+DEPLOY_SCENARIO=os-nosdn-nofeature-ha
+EXTERNAL_NETWORK=ext-network
+NODE_NAME=pod4-orange-heat1
+TEST_DB_URL=hhttp://testresults.opnfv.org/onap/api/v1/results
+BUILD_TAG=jenkins-functest-kolla-baremetal-daily-amsterdam-222
+```
+
+All the values of the env file are not mandatory.
+
+### INSTALLER_TYPE
+It indicates how you deploy your ONAP solution. The possible values are heat or oom.
+
+### DEPLOY_SCENARIO
+If you do not precise DEPLOY_SCENARIO, it will be set to os-nosdn-nofeature-nohai by default, which means
+Openstack / No Additional SDN controller / No Additional feature / no HA mode
+This parameter can be useful if you manage several infrastructure and want to filter the results.
+Other possible scenario:
+ * k8-nosdn-nofeature-ha (Kubernetes with no add-ons)
+ * os-odl-nofeature-ha (Openstack with Opendaylight SDN controller)
+
+### EXTERNAL_NETWORK (Openstack only)
+You must precise it if it is not the first network with router:external=True
+
+### KUBERNETES_PROVIDER (Kubernetes only)
+This parameter is set to local by default
+
+### KUBE_MASTER_URL (Kubernetes only)
+You must indicate your Kubernetes Master URL.
+
+### KUBE_MASTER_IP (Kubernetes only)
+You must indicate your Kubernetes Master IP.
+
+### NODE_NAME
+The NODE_NAME is the name of the infrastructure that you declared in the Test DB. If you do not want to report the
+results to the Test Database, you do not need to precise this parameter.
+
+### TEST_DB_URL
+This parameter corresponds to the Test Database FQDN.
+If you do not want to report the results to the Test Database, you do not need to precise this parameter.
+
+You can reference either your own local database or a public Database (You must be sure that your NODE_NAME has been declared on
+this database). If so, and if you precise the flag to report the results, the test results will be automatically pushed.
+
+### BUILD_TAG
+This parameter is used to retrieve the version (amsterdam in the example) for the publication in the test database.
+If you do not publish the results, you can omit it.
+It is based on an historical regex setup for OPNFV CI/CD chains.
+
+All the parameters are detailed in Functest user guide [1].
+
+## onap.properties
+
+This file includes all the ONAP end points. It is built at ONAP installation and can be found on the ONAP Robot VM.
+
+# Launch xtesting-onap-robot
+
+You can run the test with the following command:
+
+sudo docker run --env-file <your env> -v <your onap properties>:/share/config/integration_vm_properties.py colvert22/functest-onap:latest
+
+By default it will execute all the tests corresponding to the command bash -c 'run_tests -t all'
+
+If you want to execute only a subset of the tests you may precise the test cases using -t: bash -c 'run_tests -t robot_dcae'
+
+The possible test cases are indictaed in the testcases.yaml and are based on robotframework tags.
+
+If you want to push the results to the database, you can use the -r option: bash -c 'run_tests -t all -r'
+
+# References
+
+* [1] Functest User Guide: http://docs.opnfv.org/en/latest/submodules/functest/docs/testing/user/userguide/index.html
+* [2] Xtesting page: https://wiki.opnfv.org/display/functest/Xtesting
+* [3] Onap robot repo: https://git.onap.org/testsuite/
+* [4] https://hub.docker.com/r/colvert22/xtesting-onap-robot/
diff --git a/test/xtesting/robot/testcases.yaml b/test/xtesting/robot/testcases.yaml
new file mode 100644
index 0000000..484a7f0
--- /dev/null
+++ b/test/xtesting/robot/testcases.yaml
@@ -0,0 +1,127 @@
+---
+tiers:
+ -
+ name: onap
+ order: 1
+ ci_loop: '(daily)|(weekly)'
+ description: >-
+ Set of basic Functional tests to validate the ONAP installation.
+ testcases:
+ -
+ case_name: robot_healthcheck
+ project_name: functest
+ criteria: 100
+ blocking: true
+ description: >-
+ This test case verifies the basic ONAP API: appc, sdnc,so,
+ vid, ....based on the default robot tests
+ dependencies:
+ installer: ''
+ scenario: ''
+ run:
+ module: 'xtesting.core.robotframework'
+ class: 'RobotFramework'
+ args:
+ suites:
+ - /var/opt/OpenECOMP_ETE/robot/testsuites/health-check.robot
+ include:
+ - core
+ variablefile:
+ - '/share/config/integration_robot_properties.py'
+ - '/share/config/integration_vm_properties.py'
+ - '/share/config/integration_preload_parameters.py'
+
+ -
+ case_name: robot_api
+ project_name: functest
+ criteria: 100
+ blocking: false
+ description: >-
+ This test case verifies DCAE api
+ based on the default robot tests
+ dependencies:
+ installer: ''
+ scenario: ''
+ run:
+ module: 'xtesting.core.robotframework'
+ class: 'RobotFramework'
+ args:
+ suites:
+ - /var/opt/OpenECOMP_ETE/robot/testsuites/health-check.robot
+ include:
+ - api
+ variablefile:
+ - '/share/config/integration_robot_properties.py'
+ - '/share/config/integration_vm_properties.py'
+ - '/share/config/integration_preload_parameters.py'
+
+ -
+ case_name: robot_dcae
+ project_name: functest
+ criteria: 100
+ blocking: false
+ description: >-
+ This test case verifies DCAE api
+ based on the default robot tests
+ dependencies:
+ installer: ''
+ scenario: ''
+ run:
+ module: 'xtesting.core.robotframework'
+ class: 'RobotFramework'
+ args:
+ suites:
+ - /var/opt/OpenECOMP_ETE/robot/testsuites/health-check.robot
+ include:
+ - dcae
+ variablefile:
+ - '/share/config/integration_robot_properties.py'
+ - '/share/config/integration_vm_properties.py'
+ - '/share/config/integration_preload_parameters.py'
+ -
+ case_name: robot_multicloud
+ project_name: functest
+ criteria: 100
+ blocking: false
+ description: >-
+ This test case verifies the multicloud features of ONAP
+ based on the default robot tests
+ dependencies:
+ installer: ''
+ scenario: ''
+ run:
+ module: 'xtesting.core.robotframework'
+ class: 'RobotFramework'
+ args:
+ suites:
+ - /var/opt/OpenECOMP_ETE/robot/testsuites/health-check.robot
+ include:
+ - multicloud
+ variablefile:
+ - '/share/config/integration_robot_properties.py'
+ - '/share/config/integration_vm_properties.py'
+ - '/share/config/integration_preload_parameters.py'
+ -
+ case_name: robot_3rdparty
+ project_name: functest
+ criteria: 100
+ blocking: false
+ description: >-
+ This test case verifies the ONAP 3rd party API
+ especially the different drivers
+ based on the default robot tests
+ dependencies:
+ installer: ''
+ scenario: ''
+ run:
+ module: 'xtesting.core.robotframework'
+ class: 'RobotFramework'
+ args:
+ suites:
+ - /var/opt/OpenECOMP_ETE/robot/testsuites/health-check.robot
+ include:
+ - 3rdparty
+ variablefile:
+ - '/share/config/integration_robot_properties.py'
+ - '/share/config/integration_vm_properties.py'
+ - '/share/config/integration_preload_parameters.py'
diff --git a/test/xtesting/robot/thirdparty-requirements.txt b/test/xtesting/robot/thirdparty-requirements.txt
new file mode 100644
index 0000000..f85db2d
--- /dev/null
+++ b/test/xtesting/robot/thirdparty-requirements.txt
@@ -0,0 +1,15 @@
+selenium<=3.0.0
+requests==2.11.1
+robotframework-selenium2library==1.8.0
+robotframework-databaselibrary==0.8.1
+robotframework-extendedselenium2library==0.9.1
+robotframework-requests==0.4.5
+robotframework-sshlibrary==2.1.2
+robotframework-sudslibrary==0.8
+robotframework-ftplibrary==1.3
+robotframework-rammbock==0.4.0.1
+deepdiff==2.5.1
+dnspython==1.15.0
+robotframework-httplibrary==0.4.2
+robotframework-archivelibrary==0.3.2
+PyYAML==3.12