# OSM test automation project - osm/tests This repository contains tools and configuration files for testing and automation needs of OSM projet ## 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] ## Installing This bash script can be used to setup your environment to execute the tests. ```bash PACKAGES_FOLDER=osm-packages add-apt-repository -y ppa:rmescandon/yq && apt update && apt install yq git iputils-ping ssh -y pip install haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests robotframework-jsonlibrary \ robotframework-sshlibrary snap install charm # Download community packages git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git ${PACKAGES_FOLDER} ``` envfile.rc ```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= # Juju data file JUJU_DATA= # The following set of environment variables will be used in host # of the robot framework. Not needed for docker execution # Folder where Robot tests are stored ROBOT_DEVOPS_FOLDER=robot-systest # Folder to save alternative DUT environments (optional) ENVIRONMENTS_FOLDER=environments # Folder where all required packages are stored PACKAGES_FOLDER=osm-packages # Folder where test results should be exported ROBOT_REPORT_FOLDER=results ``` ## Deployment It is possible to run the tests directly from the repository or using a docker container with the tests 1. Docker container creation: ```bash docker build -f docker/Dockerfile -t osmtests . ``` Options: * --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: * [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 * [OPTIONAL]: It is the jujudata file to be used for juju cli ```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 \ -v :/root/.local/share/juju \ -o \ -p \ -t ``` 1. Running the tests manually: The way of executing the tests is via the following command: ```bash source envfile.rc robot -d reports -i testsuite/ ``` ## 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: ```bash robot -i -i testsuite/ ``` The following tags exist for each testsuite: - A tag per testsuite using its mnemonic (e.g. `basic_01`) - Cluster tag for each of the statistically similar tests: - `cluster_main`: `basic_01`, `basic_05`, `basic_08`, `basic_09`, `basic_15`, `basic_16`, basic_17`, `hackfest_basic`, `hackfest_multivdu`, `hackfest_cloudinit`, `quotas_01` - `cluster_ee_config`: `basic_06`, `basic_07`, `basic_11`, `basic_12`, `basic_13`, `basic_14`, `k8s_05`, `k8s_06` - `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_07`, `k8s_08`, `sa_08` - `cluster_k8s_charms`: `k8s_05`, `k8s_06` - `cluster_sa`: `sa_01`, `sa_02`, `sa_07` - `cluster_slices`: `slice_01`, `slice_02` - 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` 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 the tests were forcefully stopped. ## Built With * [Python](www.python.org/) - The language used * [Robot Framework](robotframework.org) - The testing framework ## Contributing Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. ## Versioning We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://osm.etsi.org/gitweb/?p=osm/tests.git;a=tags). ## License This project is licensed under the Apache2 License - see the [LICENSE.md](LICENSE) file for details ## Acknowledgments