diff options
Diffstat (limited to 'test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries')
5 files changed, 0 insertions, 316 deletions
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/ConsulLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/ConsulLibrary.py deleted file mode 100644 index 52d7e0eab..000000000 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/ConsulLibrary.py +++ /dev/null @@ -1,16 +0,0 @@ -from robot.api import logger -import HttpRequests - -CONSUL_NAME = "Consul" - -class ConsulLibrary: - - def publish_hv_ves_configuration_in_consul(self, consul_url, consul_configuration_filepath): - logger.info("Reading consul configuration file from: " + consul_configuration_filepath) - file = open(consul_configuration_filepath, "rb") - data = file.read() - file.close() - - logger.info("PUT at: " + consul_url) - resp = HttpRequests.session_without_env().put(consul_url, data=data, timeout=5) - HttpRequests.checkStatusCode(resp.status_code, CONSUL_NAME)
\ No newline at end of file diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/DcaeAppSimulatorLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/DcaeAppSimulatorLibrary.py deleted file mode 100644 index 9edad2cc2..000000000 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/DcaeAppSimulatorLibrary.py +++ /dev/null @@ -1,46 +0,0 @@ -import HttpRequests -from robot.api import logger - -DCAE_APP_NAME = "DCAE App" - - -class DcaeAppSimulatorLibrary: - - def configure_dcae_app_simulator_to_consume_messages_from_topics(self, app_url, topics): - logger.info("PUT at: " + app_url) - resp = HttpRequests.session_without_env().put(app_url, data={'topics': topics}, timeout=10) - HttpRequests.checkStatusCode(resp.status_code, DCAE_APP_NAME) - - def assert_DCAE_app_consumed(self, app_url, expected_messages_amount): - logger.info("GET at: " + app_url) - resp = HttpRequests.session_without_env().get(app_url, timeout=10) - HttpRequests.checkStatusCode(resp.status_code, DCAE_APP_NAME) - - assert resp.content == expected_messages_amount, \ - "Messages consumed by simulator: " + resp.content + " expecting: " + expected_messages_amount - - def assert_DCAE_app_consumed_less_equal_than(self, app_url, messages_threshold): - logger.info("GET at: " + app_url) - resp = HttpRequests.session_without_env().get(app_url, timeout=10) - HttpRequests.checkStatusCode(resp.status_code, DCAE_APP_NAME) - - logger.debug("Messages consumed by simulator: " + resp.content + - " expecting more than 0 and less/equal than " + messages_threshold) - - assert 0 < int(resp.content) <= int(messages_threshold), \ - "Messages consumed by simulator: " + resp.content + \ - " expecting more than 0 and less/equal than " + messages_threshold - - def reset_DCAE_app_simulator(self, app_url): - logger.info("DELETE at: " + app_url) - resp = HttpRequests.session_without_env().delete(app_url, timeout=10) - HttpRequests.checkStatusCode(resp.status_code, DCAE_APP_NAME) - - def assert_DCAE_app_consumed_proper_messages(self, app_url, message_filepath): - logger.info("POST at: " + app_url) - file = open(message_filepath, "rb") - data = file.read() - file.close() - - resp = HttpRequests.session_without_env().post(app_url, data=data, timeout=10) - HttpRequests.checkStatusCode(resp.status_code, DCAE_APP_NAME) diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/HttpRequests.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/HttpRequests.py deleted file mode 100644 index c0dcd81d4..000000000 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/HttpRequests.py +++ /dev/null @@ -1,19 +0,0 @@ -import requests -from robot.api import logger - -valid_status_codes = [ - requests.codes.ok, - requests.codes.accepted -] - - -def session_without_env(): - session = requests.Session() - session.trust_env = False - return session - - -def checkStatusCode(status_code, server_name): - if status_code not in valid_status_codes: - logger.error("Response status code from " + server_name + ": " + str(status_code)) - raise (Exception(server_name + " returned status code " + status_code)) diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/VesHvContainersUtilsLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/VesHvContainersUtilsLibrary.py deleted file mode 100644 index 989a796ce..000000000 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/VesHvContainersUtilsLibrary.py +++ /dev/null @@ -1,69 +0,0 @@ -from time import time - -from robot.api import logger -import os.path -import docker -from io import BytesIO -from os.path import basename -from tarfile import TarFile, TarInfo - -LOCALHOST = "localhost" - - -class VesHvContainersUtilsLibrary: - - def get_consul_api_access_url(self, method, image_name, port): - return self.create_url( - method, - self.get_instance_address(image_name, port) - ) - - def get_xnf_sim_api_access_url(self, method, host): - if is_running_inside_docker(): - return self.create_url(method, host) - else: - logger.info("File `/.dockerenv` not found. Assuming local environment and using localhost.") - port_from_container_name = str(host)[-4:] - return self.create_url(method, LOCALHOST + ":" + port_from_container_name) - - def get_dcae_app_api_access_url(self, method, image_name, port): - return self.create_url( - method, - self.get_instance_address(image_name, port) - ) - - def get_instance_address(self, image_name, port): - if is_running_inside_docker(): - return image_name + ":" + port - else: - logger.info("File `/.dockerenv` not found. Assuming local environment and using localhost.") - return LOCALHOST + ":" + port - - def create_url(self, method, host_address): - return method + host_address - -def is_running_inside_docker(): - return os.path.isfile("/.dockerenv") - -def copy_to_container(container_id, filepaths, path='/etc/ves-hv'): - with create_archive(filepaths) as archive: - docker.APIClient('unix:///var/run/docker.sock') \ - .put_archive(container=container_id, path=(path), data=archive) - - -def create_archive(filepaths): - tarstream = BytesIO() - tarfile = TarFile(fileobj=tarstream, mode='w') - for filepath in filepaths: - file = open(filepath, 'r') - file_data = file.read() - - tarinfo = TarInfo(name=basename(file.name)) - tarinfo.size = len(file_data) - tarinfo.mtime = time() - - tarfile.addfile(tarinfo, BytesIO(file_data)) - - tarfile.close() - tarstream.seek(0) - return tarstream diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py deleted file mode 100644 index f6a978754..000000000 --- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py +++ /dev/null @@ -1,166 +0,0 @@ -import HttpRequests -import os -import docker -from robot.api import logger -from time import sleep - -XNF_SIMULATOR_NAME = "xNF Simulator" -SIMULATOR_IMAGE_NAME = "onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-xnf-simulator" -SIMULATOR_IMAGE_FULL_NAME = os.getenv("DOCKER_REGISTRY_PREFIX") + SIMULATOR_IMAGE_NAME + ":latest" -WORKSPACE_ENV = os.getenv("WORKSPACE") -certificates_dir_path = WORKSPACE_ENV + "/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/ssl/" -collector_certs_lookup_dir = "/etc/ves-hv/" -ONE_SECOND_IN_NANOS = 10 ** 9 - - -class XnfSimulatorLibrary: - - def start_xnf_simulators(self, list_of_ports, - should_use_valid_certs=True, - should_disable_ssl=False, - should_connect_to_unencrypted_hv_ves=False): - logger.info("Creating " + str(len(list_of_ports)) + " xNF Simulator containers") - dockerClient = docker.from_env() - - self.pullImageIfAbsent(dockerClient) - logger.info("Using image: " + SIMULATOR_IMAGE_FULL_NAME) - - simulators_addresses = self.create_containers(dockerClient, - list_of_ports, - should_use_valid_certs, - should_disable_ssl, - should_connect_to_unencrypted_hv_ves) - - self.assert_containers_startup_was_successful(dockerClient) - dockerClient.close() - return simulators_addresses - - def pullImageIfAbsent(self, dockerClient): - try: - dockerClient.images.get(SIMULATOR_IMAGE_FULL_NAME) - except: - logger.console("Image " + SIMULATOR_IMAGE_FULL_NAME + " will be pulled from repository. " - "This can take a while.") - dockerClient.images.pull(SIMULATOR_IMAGE_FULL_NAME) - - def create_containers(self, - dockerClient, - list_of_ports, - should_use_valid_certs, - should_disable_ssl, - should_connect_to_unencrypted_hv_ves): - simulators_addresses = [] - for port in list_of_ports: - xnf = XnfSimulator(port, should_use_valid_certs, should_disable_ssl, should_connect_to_unencrypted_hv_ves) - container = self.run_simulator(dockerClient, xnf) - logger.info("Started container: " + container.name + " " + container.id) - simulators_addresses.append(container.name + ":" + xnf.port) - return simulators_addresses - - def run_simulator(self, dockerClient, xnf): - xNF_startup_command = xnf.get_startup_command() - xNF_healthcheck_command = xnf.get_healthcheck_command() - port = xnf.port - logger.info("Startup command: " + str(xNF_startup_command)) - logger.info("Healthcheck command: " + str(xNF_healthcheck_command)) - return dockerClient.containers.run(SIMULATOR_IMAGE_FULL_NAME, - command=xNF_startup_command, - healthcheck=xNF_healthcheck_command, - detach=True, - network="ves-hv-default", - ports={port + "/tcp": port}, - volumes=self.container_volumes(), - name=xnf.container_name_prefix + port) - - def container_volumes(self): - return {certificates_dir_path: {"bind": collector_certs_lookup_dir, "mode": 'rw'}} - - def assert_containers_startup_was_successful(self, dockerClient): - checks_amount = 6 - check_interval_in_seconds = 5 - for _ in range(checks_amount): - sleep(check_interval_in_seconds) - all_containers_healthy = True - for container in self.get_simulators_list(dockerClient): - all_containers_healthy = all_containers_healthy and self.is_container_healthy(container) - if (all_containers_healthy): - return - raise ContainerException("One of xNF simulators containers did not pass the healthcheck.") - - def is_container_healthy(self, container): - container_health = container.attrs['State']['Health']['Status'] - return container_health == 'healthy' and container.status == 'running' - - def stop_and_remove_all_xnf_simulators(self, suite_name): - dockerClient = docker.from_env() - for container in self.get_simulators_list(dockerClient): - logger.info("Stopping and removing container: " + container.id) - log_filename = WORKSPACE_ENV + "/archives/containers_logs/" + \ - suite_name.split(".")[-1] + "_" + container.name + ".log" - file = open(log_filename, "w+") - file.write(container.logs()) - file.close() - container.stop() - container.remove() - dockerClient.close() - - def get_simulators_list(self, dockerClient): - return dockerClient.containers.list(filters={"ancestor": SIMULATOR_IMAGE_FULL_NAME}, all=True) - - def send_messages(self, simulator_url, message_filepath): - logger.info("Reading message to simulator from: " + message_filepath) - - file = open(message_filepath, "rb") - data = file.read() - file.close() - - logger.info("POST at: " + simulator_url) - resp = HttpRequests.session_without_env().post(simulator_url, data=data, timeout=5) - HttpRequests.checkStatusCode(resp.status_code, XNF_SIMULATOR_NAME) - - -class XnfSimulator: - container_name_prefix = "ves-hv-collector-xnf-simulator" - - def __init__(self, - port, - should_use_valid_certs, - should_disable_ssl, - should_connect_to_unencrypted_hv_ves): - self.port = port - cert_name_prefix = "" if should_use_valid_certs else "untrusted" - certificates_path_with_file_prefix = collector_certs_lookup_dir + cert_name_prefix - self.key_store_path = certificates_path_with_file_prefix + "client.p12" - self.trust_store_path = certificates_path_with_file_prefix + "trust.p12" - self.sec_store_passwd = "onaponap" - self.disable_ssl = should_disable_ssl - self.hv_collector_host = "unencrypted-ves-hv-collector" \ - if should_connect_to_unencrypted_hv_ves else "ves-hv-collector" - - def get_startup_command(self): - startup_command = ["--listen-port", self.port, - "--ves-host", self.hv_collector_host, - "--ves-port", "6061", - "--key-store", self.key_store_path, - "--trust-store", self.trust_store_path, - "--key-store-password", self.sec_store_passwd, - "--trust-store-password", self.sec_store_passwd - ] - if self.disable_ssl: - startup_command.append("--ssl-disable") - return startup_command - - def get_healthcheck_command(self): - return { - "interval": 5 * ONE_SECOND_IN_NANOS, - "timeout": 3 * ONE_SECOND_IN_NANOS, - "retries": 1, - "test": ["CMD", "curl", "--request", "GET", - "--fail", "--silent", "--show-error", - "localhost:" + self.port + "/healthcheck"] - } - - -class ContainerException(Exception): - def __init__(self, message): - super(ContainerException, self).__init__(message) |