4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
8 http://www.apache.org/licenses/LICENSE-2.0
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 See the License for the specific language governing permissions and
15 limitations under the License
18 # OSM test automation project - osm/tests
20 This repository contains tools and configuration files for testing and automation needs of OSM projet
25 * **Packages**: ssh ping yq git
26 * **Python3 packages**: haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests robotframework-jsonlibrary robotframework-sshlibrary
27 * Clone **osm-packages** from gitlab
28 * Environment config file for your infrastructure [envfile.rc]
32 This bash script can be used to setup your environment to execute the tests.
35 PACKAGES_FOLDER=osm-packages
36 add-apt-repository -y ppa:rmescandon/yq && apt update && apt install yq git iputils-ping ssh -y
37 pip install haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests robotframework-jsonlibrary \
38 robotframework-sshlibrary
40 # Download community packages
41 git clone https://osm.etsi.org/gitlab/vnf-onboarding/osm-packages.git ${PACKAGES_FOLDER}
48 OS_USERNAME=<openstack_username>
49 OS_PASSWORD=<openstack_password>
50 OS_TENANT_NAME=<openstack_tenant_name>
51 OS_AUTH_URL=<openstack_authorization_url>
52 OS_TENANT_ID=<openstack_tenant_id>
55 OSM_HOSTNAME=<osm_ip_address>
56 VIM_TARGET=<osm_vim_name>
57 VIM_MGMT_NET=<osm_vim_mgmt_name>
59 # Clouds file datacenter
60 OS_CLOUD=<datacenter_in_clouds_file>
62 OS_SDNC=<SDN_controller_in_sdncs_file>
65 K8S_CREDENTIALS=<path_to_kubeconfig>
67 # The following set of environment variables will be used in host
68 # of the robot framework. Not needed for docker execution
70 # Folder where Robot tests are stored
71 ROBOT_DEVOPS_FOLDER=robot-systest
73 # Folder to save alternative DUT environments (optional)
74 ENVIRONMENTS_FOLDER=environments
76 # Folder where all required packages are stored
77 PACKAGES_FOLDER=osm-packages
79 # Folder where test results should be exported
80 ROBOT_REPORT_FOLDER=results
85 It is possible to run the tests directly from the repository or using a docker container with the tests
87 1. Docker container creation:
90 docker build -f docker/Dockerfile -t osmtests .
95 * --env-file: It is the environmental file where is described the OSM target and VIM
96 * -o <osmclient_version> [OPTIONAL]: It is used to specify a particular osmclient version. Default: latest
97 * -p <package_branch> [OPTIONAL]: OSM packages repository branch. Default: master
98 * -t <testing_tags> [OPTIONAL]: Robot tests tags. [sanity, regression, particular_test]. Default: sanity
102 * <path_to_reports> [OPTIONAL]: It is the absolute path to reports location in the host
103 * <path_to_clouds.yaml> [OPTIONAL]: It is the absolute path to the clouds.yaml file in the host
104 * <path_to_sdncs.yaml> [OPTIONAL]: It is the absolute path to the sdncs.yaml file in the host
105 * <path_to_kubeconfig> [OPTIONAL]: It is the kubeconfig file to be used for k8s clusters
108 docker run --rm=true -t osmtests --env-file <env_file> \
109 -v <path_to_reports>:/reports osmtests \
110 -v <path_to_clouds.yaml>:/robot-systest/clouds.yaml \
111 -v <path_to_sdncs.yaml>:/robot-systest/sdncs.yaml \
112 -v <path_to_kubeconfig>:/root/.kube/config \
113 -o <osmclient_version> \
114 -p <package_branch> \
118 1. Running the tests manually:
120 The way of executing the tests is via the following command:
124 robot -d reports -i <testing_tags> testsuite/
129 All tests in the testsuites have tags. Tags allow to run only a set of tests
130 identified by a tag. Several tags can be specified when running robot in the
134 robot -i <tag_01> -i <tag_02> testsuite/
137 The following tags exist for each testsuite:
139 - A tag per testsuite using its mnemonic (e.g. `basic_01`)
140 - Cluster tag for each of the statistically similar tests:
141 - `cluster_main`: `basic_01`, `basic_05`, `basic_08`, `basic_09`, `basic_15`,
142 `basic_16`, basic_17`, `hackfest_basic`, `hackfest_multivdu`,
143 `hackfest_cloudinit`, `quotas_01`
144 - `cluster_ee_config`: `basic_06`, `basic_07`, `basic_11`, `basic_12`,
145 `basic_13`, `basic_14`, `k8s_05`, `k8s_06`
146 - `cluster_relations`: `basic_11`, `basic_13`, `basic_14`
147 - `cluster_epa`: `epa_01`, `epa_02`, `epa_03`, `epa_04`, `epa_05`
148 - `cluster_k8s`: `k8s_01`, `k8s_02`, `k8s_03`, `k8s_04`, `k8s_07`, `sa_08`
149 - `cluster_k8s_charms`: `k8s_05`, `k8s_06`
150 - `cluster_sa`: `sa_01`, `sa_02`, `sa_07`
151 - `cluster_slices`: `slice_01`, `slice_02`
152 - daily: for all testsuites that will run in the daily job
153 - regression: for all testsuites that should pass in the current stable branch
154 - sanity: for all testsuites that should be passed by each commit in the
155 stage3 to be successfully verified by Jenkins, currently `basic_07`,
156 `basic_11`, `k8s_03`, `k8s_04`, `sa_02`
158 In addition, the tag "cleanup" exists in those tests that perform
159 any deletion. In that way, it can be invoked to retry the deletion if
160 the tests were forcefully stopped.
164 * [Python](www.python.org/) - The language used
165 * [Robot Framework](robotframework.org) - The testing framework
169 Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.
173 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).
177 This project is licensed under the Apache2 License - see the [LICENSE.md](LICENSE) file for details