blob: 926d4bcf6ee00fe465705c3dc954c192ca972341 [file] [log] [blame]
velezaf44a8862021-11-16 11:28:43 +00001## Copyright 2020 ETSI OSM
Frank Brydene570b102020-09-07 08:45:54 +00002#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12# implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import os
17from shutil import copy
18from subprocess import run
19from osm_client import *
20
21packages_folder = os.environ["PACKAGES_FOLDER"]
22conformance_folder = "{}/{}".format(os.environ["ROBOT_DEVOPS_FOLDER"], "conformance-tests")
23test_lists_folder = "{}/{}".format(conformance_folder, "test-lists")
24sol005_folder = "{}/repo/SOL005".format(conformance_folder)
25osm_hostname = os.environ["OSM_HOSTNAME"]
26
27
28def get_package_path(package_name):
29 return "{}/{}".format(packages_folder, package_name)
30
31
32def get_suite_path(suite_name):
33 return "{}/repo/SOL005/{}".format(conformance_folder, suite_name)
34
35
36def run_test_suite(suite_dir, suite_name, arg_file):
37 print("robot -d {}/repo/{}/reports --argumentfile {} .".format(conformance_folder, suite_name, arg_file))
velezaf44a8862021-11-16 11:28:43 +000038 run(["robot --loglevel=TRACE -d {}/reports/{} --argumentfile {} .".format(conformance_folder, suite_name, arg_file)], cwd=suite_dir, shell=True)
Frank Brydene570b102020-09-07 08:45:54 +000039
40
41def sub_env_vars(file_dir, file_name):
velezaf44a8862021-11-16 11:28:43 +000042 run(["cat {} | envsubst | cat > {}".format(file_name, get_suite_path(file_name.split(".")[0]) + "/" + file_name)], cwd=file_dir, shell=True)
Frank Brydene570b102020-09-07 08:45:54 +000043
44
45# RESOURCE CREATION HAPPENS BELOW
Frank Brydene570b102020-09-07 08:45:54 +000046
velezaf44a8862021-11-16 11:28:43 +000047nsd_id, vnfd_id, ns_id = "", "", ""
48
49if ':' in osm_hostname:
50 port = osm_hostname.split(':')[-1]
51else:
52 port = "9999"
53osm_hostname = osm_hostname.split(':')[0]
54
55osm = OSM(osm_hostname, port)
Frank Brydene570b102020-09-07 08:45:54 +000056
57os.environ["AUTH_TOKEN"] = osm.get_auth_token()
58
59try:
60 vnfd_id = osm.create_vnfd(get_package_path("hackfest_basic_vnf/hackfest_basic_vnfd.yaml"))
61 nsd_id = osm.create_nsd(get_package_path("hackfest_basic_ns/hackfest_basic_nsd.yaml"))
velezaf44a8862021-11-16 11:28:43 +000062 ns_id = osm.create_ns("Test_NS", nsd_id, "osm")
Frank Brydene570b102020-09-07 08:45:54 +000063except ResourceException as e:
64 print(e.message)
65
velezaf44a8862021-11-16 11:28:43 +000066print("VNFD: {}\nNSD: {}\nNS: {}".format(vnfd_id, nsd_id, ns_id))
67
Frank Brydene570b102020-09-07 08:45:54 +000068# Apply relevant env variables (required for test vars)
69os.environ["NSD_INFO_ID"] = nsd_id
velezaf44a8862021-11-16 11:28:43 +000070os.environ["VNFD_INFO_ID"] = vnfd_id
71os.environ["NS_INFO_ID"] = ns_id
72os.environ["NFVO_HOST"] = osm_hostname
73os.environ["NFVO_PORT"] = port
Frank Brydene570b102020-09-07 08:45:54 +000074
75# RESOURCE CREATION HAPPENS ABOVE
76
velezaf44a8862021-11-16 11:28:43 +000077
Frank Brydene570b102020-09-07 08:45:54 +000078# Copy test selection files over to relevant directories
79(_, _, filenames) = next(os.walk(test_lists_folder))
80for f in filenames:
81 if f.endswith(".txt"):
82 # Apply ENV Variables
83 sub_env_vars(test_lists_folder, f)
84
Frank Brydene570b102020-09-07 08:45:54 +000085
86# Run the robot tests
87(_, directories, _) = next(os.walk(sol005_folder))
88for d in directories:
89 run_test_suite("{}/{}".format(sol005_folder, d), d, d + ".txt")
90
velezaf44a8862021-11-16 11:28:43 +000091
Frank Brydene570b102020-09-07 08:45:54 +000092# We then need to clear the created resources
93try:
velezaf44a8862021-11-16 11:28:43 +000094 osm.delete_ns(ns_id)
Frank Brydene570b102020-09-07 08:45:54 +000095 osm.delete_nsd(nsd_id)
96 osm.delete_vnfd(vnfd_id)
97except ResourceException as e:
98 print("Deletion failed: {}".format(e.message))
99
100print("Cleared resources")