# how to run: python3 validate_load_tests/validate_load_tests.py data.csv import logging import re import sys import csv import json from urllib.request import urlopen report_file = sys.argv[1] covered_endpoints = {} with open(report_file, "r", newline="") as csvfile: reader = csv.reader(csvfile, delimiter=",") for row in reader: if "-api" in row[1]: app, endpoint = row[1].lstrip("/").split("-api") if app not in covered_endpoints: covered_endpoints[app] = [] covered_endpoints[app].append("/api" + re.sub(r"(([A-Z\_A_Z]|[A-Z]){2,})", r"{\1}", endpoint).lower()) swagger_urls = { "gate": "https://dev-gate-api-internal.apollo.stream/api/docs/swagger.json", "apollo": "https://dev-api-internal.apollo.stream/api/docs/swagger.json", "dsp": "https://dev-dsp-api-internal.apollo.stream/api/docs/swagger.json", "vendor": " https://dev-vendor-api-internal.apollo.stream/api/docs/swagger.json", "user-data": "https://dev-user-data-internal.apollo.stream/api/openapi.json", "core-images": "https://qa-images-api.atlas.stream/docs/openapi.yaml" } logger = logging.getLogger() for app, swagger_url in swagger_urls.items(): response = urlopen(swagger_url) data = json.loads(response.read()) app_endpoints = set(data["paths"].keys()) if app in covered_endpoints: not_covered = app_endpoints - set(covered_endpoints[app]) if not_covered: logger.warning(f"{app}:not_covered:{not_covered}") covered_wrong = set(covered_endpoints[app]) - app_endpoints if covered_wrong: logger.warning(f"{app}:covered_wrong:{covered_wrong}") else: logger.warning(f"{app}:is_not_checked")