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