X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Ftests.git;a=blobdiff_plain;f=README.md;h=03d60549bfe19db3e7e8d349957392fe559a1cb9;hp=aa3b58cb1fc7503b17e4fe6e98fb748c8a73faf1;hb=HEAD;hpb=36ec713138cf03f3e5571830f5a2e847147a4bab diff --git a/README.md b/README.md index aa3b58c..7be9050 100644 --- a/README.md +++ b/README.md @@ -17,116 +17,127 @@ 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= +VIM_TARGET= +VIM_MGMT_NET= +OS_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= -OS_PASSWORD= -OS_TENANT_NAME= -OS_AUTH_URL= -OS_TENANT_ID= - -# OSM Setup -OSM_HOSTNAME= -VIM_TARGET= -VIM_MGMT_NET= - -# Clouds file datacenter -OS_CLOUD= -# SDNCs file -OS_SDNC= - -# K8S config file -K8S_CREDENTIALS= - -# 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 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: + +- [OPTIONAL]: the absolute path to reports location in the host +- [OPTIONAL]: the absolute path to the clouds.yaml file in the host +- [OPTIONAL]: the absolute path to the sdncs.yaml file in the host +- [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 ` [OPTIONAL]: It is used to specify a particular osmclient version. Default: latest - `-p ` [OPTIONAL]: OSM packages repository branch. Default: master - `-t ` [OPTIONAL]: Robot tests tags. [sanity, regression, particular_test]. Default: sanity -Volumes: +## How to run tests from a host -- [OPTIONAL]: It is the absolute path to reports location in the host -- [OPTIONAL]: It is the absolute path to the clouds.yaml file in the host -- [OPTIONAL]: It is the absolute path to the sdncs.yaml file in the host -- [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 \ - -v :/reports osmtests \ - -v :/robot-systest/clouds.yaml \ - -v :/robot-systest/sdncs.yaml \ - -v :/root/.kube/config \ - -o \ - -p \ - -t +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 +``` + +### Configure the environment + +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= +export VIM_TARGET= +export VIM_MGMT_NET= +export OS_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 testsuite/ ``` -### From an environment identical to OSM CICD +## How to run tests from an environment identical to OSM CICD ```bash git clone https://osm.etsi.org/gerrit/osm/devops @@ -156,9 +167,7 @@ docker run --rm=true -t osmtests --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 -i 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 @@ -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