Bug 2327 fix to verify ipaddress in sol003_02 testsuite
[osm/tests.git] / README.md
index 5e09d8b..7be9050 100644 (file)
--- a/README.md
+++ b/README.md
@@ -17,118 +17,129 @@ limitations under the License
 
 # OSM test automation project - osm/tests
 
-This repository contains tools and configuration files for testing and automation needs of OSM projet
+This repository contains tools and configuration files for testing and automation needs of OSM project.
 
 ## Prerequisites
 
-- **Robot Framework**
-- **Packages**: ssh ping yq git
-- **Python3 packages**: haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests robotframework-jsonlibrary robotframework-sshlibrary
-- Clone **osm-packages** from gitlab
-- Environment config file for your infrastructure `envfile.rc`
+- OSM running
+- VIM already registered in OSM
+- K8s cluster already registered in OSM (for tests involving a K8s cluster)
 
-## Installing
+## Quickstart. How to run tests using OSM docker images
 
-This bash script can be used to setup your environment to execute the tests.
+### Configure the environment file
+
+Create a file `envconfig.rc` copying from `envconfig-local.rc` and set the required variables.
 
-```bash
-python3 -m pip install -r requirements.txt
-python3 -m pip install -r requirements-dev.txt
-# Download community packages
-PACKAGES_FOLDER=osm-packages
-git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git ${PACKAGES_FOLDER}
+```
+OSM_HOSTNAME=<OSM_IP_ADDRESS>
+VIM_TARGET=<VIM_REGISTERED_AT_OSM>
+VIM_MGMT_NET=<NAME_OF_THE_MGMT_NETWORK_IN_THE_VIM>
+OS_CLOUD=<OPENSTACK_CLOUD>    # OpenStack Cloud defined in $HOME/.config/openstack/clouds.yaml or in /etc/openstack/clouds.yaml
 ```
 
-Configure a file `envfile.rc` copying from `envconfig-local.rc` and set the required variables
+### Run the tests
 
 ```bash
-# VIM Setup
-OS_USERNAME=<openstack_username>
-OS_PASSWORD=<openstack_password>
-OS_TENANT_NAME=<openstack_tenant_name>
-OS_AUTH_URL=<openstack_authorization_url>
-OS_TENANT_ID=<openstack_tenant_id>
-
-# OSM Setup
-OSM_HOSTNAME=<osm_ip_address>
-VIM_TARGET=<osm_vim_name>
-VIM_MGMT_NET=<osm_vim_mgmt_name>
-
-# Clouds file datacenter
-OS_CLOUD=<datacenter_in_clouds_file>
-# SDNCs file
-OS_SDNC=<SDN_controller_in_sdncs_file>
-
-# K8S config file
-K8S_CREDENTIALS=<path_to_kubeconfig>
-
-# The following set of environment variables will be used in host
-# of the robot framework. Not needed for docker execution
+docker run --rm=true --name tests -t --env-file envconfig.rc \
+           -v ~/.config/openstack/clouds.yaml:/etc/openstack/clouds.yaml \
+           -v ~/tests/reports:/robot-systest/reports \
+           opensourcemano/tests:testing-daily \
+           -t sanity
+```
 
-# Folder where Robot tests are stored
-ROBOT_DEVOPS_FOLDER=robot-systest
+You can use a different robot tag instead of `sanity`. The whole list of tags are gathered below in this README.
 
-# Folder to save alternative DUT environments (optional)
-ENVIRONMENTS_FOLDER=environments
+## How to build docker container for tests and run tests from there
 
-# Folder where all required packages are stored
-PACKAGES_FOLDER=osm-packages
+### Create the docker container
 
-# Folder where test results should be exported
-ROBOT_REPORT_FOLDER=results
+```bash
+docker build -f docker/Dockerfile -t osmtests .
 ```
 
-## Running the tests
-
-### From the host machine
-
-If you have installed all the dependecnies, the way of executing the tests is via the following command:
+### Run the tests
 
 ```bash
-source envfile.rc
-robot -d reports -i <testing_tags> testsuite/
+docker run --rm=true --name tests -t --env-file envconfig.rc \
+           -v ~/.config/openstack/clouds.yaml:/etc/openstack/clouds.yaml \
+           -v ~/tests/reports:/robot-systest/reports \
+           osmtests \
+           -t sol003_01
 ```
 
-### From docker container
-
-It is possible to run the tests directly from the repository or using a docker container with the tests.
+## How to mount local tests folder for developing purposes
 
-Create the docker container:
+The following line will mount the folder `robot-systest`, including all libraries and testuites, and will execute the testsuite `sol003_01`:
 
 ```bash
-docker build -f docker/Dockerfile -t osmtests .
+docker run --rm=true --name tests -t --env-file envconfig.rc \
+           -v ~/.config/openstack/clouds.yaml:/etc/openstack/clouds.yaml \
+           -v ~/tests/robot-systest:/robot-systest \
+           -v ~/tests/reports:/robot-systest/reports \
+           -v ~/osm-packages:/robot-systest/osm-packages \
+           opensourcemano/tests:testing-daily \
+           -t sol003_01
 ```
 
-Options:
+Relevant volumes to be mounted are:
+
+- <path_to_reports> [OPTIONAL]: the absolute path to reports location in the host
+- <path_to_clouds.yaml> [OPTIONAL]: the absolute path to the clouds.yaml file in the host
+- <path_to_sdncs.yaml> [OPTIONAL]: the absolute path to the sdncs.yaml file in the host
+- <path_to_kubeconfig> [OPTIONAL]: the kubeconfig file to be used for k8s clusters
+
+Other relevant options to run tests are:
 
 - `--env-file`: It is the environmental file where is described the OSM target and VIM
 - `-o <osmclient_version>` [OPTIONAL]: It is used to specify a particular osmclient version. Default: latest
 - `-p <package_branch>` [OPTIONAL]: OSM packages repository branch. Default: master
 - `-t <testing_tags>` [OPTIONAL]: Robot tests tags. [sanity, regression, particular_test]. Default: sanity
 
-Volumes:
+## How to run tests from a host
 
-- <path_to_reports> [OPTIONAL]: It is the absolute path to reports location in the host
-- <path_to_clouds.yaml> [OPTIONAL]: It is the absolute path to the clouds.yaml file in the host
-- <path_to_sdncs.yaml> [OPTIONAL]: It is the absolute path to the sdncs.yaml file in the host
-- <path_to_kubeconfig> [OPTIONAL]: It is the kubeconfig file to be used for k8s clusters
+In general, testing from docker images is the best way if you want to develop for OSM. However, sometimes it could be useful to run tests directly from the host.
 
-Then, run the tests:
+### Install dependencies
+
+This bash script can be used to setup your environment to execute the tests.
 
 ```bash
-docker run --rm=true -t osmtests --env-file <env_file> \
-       -v <path_to_reports>:/reports osmtests \
-       -v <path_to_clouds.yaml>:/robot-systest/clouds.yaml \
-       -v <path_to_sdncs.yaml>:/robot-systest/sdncs.yaml \
-       -v <path_to_kubeconfig>:/root/.kube/config \
-       -o <osmclient_version> \
-       -p <package_branch> \
-       -t <testing_tags>
+sudo apt-get update
+sudo apt-get install ssh ping yq git
+# Python packages used for the tests
+python3 -m pip install -r requirements.txt
+python3 -m pip install -r requirements-dev.txt
+# Download community packages
+git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git
 ```
 
-### From an environment identical to OSM CICD
+### Configure the environment
 
-````bash
+Create a file `envconfig.rc` copying from `envconfig-local.rc` and set the required variables (in this case, the use of `export` is mandatory).
+
+```
+export OSM_HOSTNAME=<OSM_IP_ADDRESS>
+export VIM_TARGET=<VIM_REGISTERED_AT_OSM>
+export VIM_MGMT_NET=<NAME_OF_THE_MGMT_NETWORK_IN_THE_VIM>
+export OS_CLOUD=<OPENSTACK_CLOUD>    # OpenStack Cloud defined in $HOME/.config/openstack/clouds.yaml or in /etc/openstack/clouds.yaml
+export K8S_CREDENTIALS= # path to the kubeconfig file of the K8s cluster to be tested
+export OCI_REGISTRY_URL= # URL of the OCI registry where helm charts used in test packages are stored. 
+export OCI_REGISTRY_USER= # User of the OCI registry
+export OCI_REGISTRY_PASSWORD= # Password of the OCI registry
+```
+
+### Running the tests
+
+```bash
+source envconfig.rc
+mkdir reports
+robot -d reports -i <testing_tags> testsuite/
+```
+
+## How to run tests from an environment identical to OSM CICD
+
+```bash
 git clone https://osm.etsi.org/gerrit/osm/devops
 git clone https://osm.etsi.org/gerrit/osm/IM
 git clone https://osm.etsi.org/gerrit/osm/osmclient
@@ -156,9 +167,7 @@ docker run --rm=true -t osmtests --env-file <env_file> \
 
 ## Test tags
 
-All tests in the testsuites have tags. Tags allow to run only a set of tests
-identified by a tag. Several tags can be specified when running robot in the
-following way:
+All tests in the testsuites have tags. Tags allow to run only a set of tests identified by a tag. Several tags can be specified when running robot in the following way:
 
 ```bash
 robot -i <tag_01> -i <tag_02> testsuite/
@@ -176,17 +185,17 @@ The following tags exist for each testsuite:
   - `cluster_relations`: `basic_11`, `basic_13`, `basic_14`
   - `cluster_epa`: `epa_01`, `epa_02`, `epa_03`, `epa_04`, `epa_05`
   - `cluster_k8s`: `k8s_01`, `k8s_02`, `k8s_03`, `k8s_04`, `k8s_05`, `k8s06`,
-    `k8s_07`, `k8s_08`, `k8s_09`, `k8s_10`, `k8s_11`, `sa_08`
+    `k8s_07`, `k8s_08`, `k8s_09`, `k8s_10`, `k8s_11`, `k8s_12`, `k8s_13`, `sa_08`
   - `cluster_k8s_charms`: `k8s_05`, `k8s_06`
   - `cluster_sa`: `sa_01`, `sa_02`, `sa_07`
   - `cluster_slices`: `slice_01`, `slice_02`
   - `cluster_heal`: `heal_01`, `heal_02`, `heal_03`, `heal_04`
-  - `cluster_sol003`: `sol003_01`
+  - `cluster_osm_rest`: `sol003_01`
 - daily: for all testsuites that will run in the daily job
 - regression: for all testsuites that should pass in the current stable branch
 - sanity: for all testsuites that should be passed by each commit in the
-  stage3 to be successfully verified by Jenkins, currently `basic_07`,
-  `basic_11`, `k8s_03`, `k8s_04`, `sa_02`, `hackfest_basic`, `hackfest_cloudinit`
+  stage3 to be successfully verified by Jenkins, currently `k8s_04`,
+  `sa_02`, `hackfest_basic`, `hackfest_cloudinit`
 
 In addition, the tag "cleanup" exists in those tests that perform
 any deletion. In that way, it can be invoked to retry the deletion if
@@ -194,11 +203,11 @@ the tests were forcefully stopped.
 
 - For helping in the migration tests and other scenarios in which you don't want
 to destroy the deployments immediately, the following tags are used:
-  - prepare: for the tests that are used to deploy the network
+  - `prepare`: for the tests that are used to deploy the network
   services under test
-  - verify: for the tests that perform the actual testing, or changes for
+  - `verify`: for the tests that perform the actual testing, or changes for
   additional verifications (e.g. scaling).
-  - cleanup: already described above.
+  - `cleanup`: already described above.
 
   So, for instance, you could first deploy a number of network services executing
   the tests with "prepare" tag, migrate to another OSM version, and then
@@ -248,5 +257,5 @@ We use [SemVer](http://semver.org/) for versioning. For the versions available,
 
 ## License
 
-This project is licensed under the Apache2 License - see the [LICENSE.md](LICENSE) file for details
+This project is licensed under the Apache2 License - see the [LICENSE](LICENSE) file for details