From f9e0a1a422577a2d4d286e3bba4d518aa1ea7c24 Mon Sep 17 00:00:00 2001 From: Nikolay Stanchev <ns17@it-innovation.soton.ac.uk> Date: Tue, 10 Jul 2018 16:31:53 +0100 Subject: [PATCH] Adds validation for the service function chain instance ID when using the build graph API endpoint --- src/service/clmcservice/graphapi/tests.py | 15 +++++++++++++++ src/service/clmcservice/graphapi/utilities.py | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/service/clmcservice/graphapi/tests.py b/src/service/clmcservice/graphapi/tests.py index 5fcffdc..c818a3a 100644 --- a/src/service/clmcservice/graphapi/tests.py +++ b/src/service/clmcservice/graphapi/tests.py @@ -141,6 +141,21 @@ class TestGraphAPI(object): error_raised = True assert error_raised, "A bad request error must have been raised in case of invalid URL parameters." + service_functions = dict(nginx={"measurement_name": "nginx", "response_time_field": "mean(avg_processing_time)"}, + minio={"measurement_name": "minio_http", "response_time_field": "mean(total_processing_time)/mean(total_requests_count)"}) + build_json_body = dict(database=test_db_name, retention_policy="autogen", service_function_chain_instance="testsfc1", service_functions=service_functions) + body = dumps(build_json_body) + request = testing.DummyRequest() + request.params["from"] = from_timestamp + request.params["to"] = to_timestamp + request.body = body.encode(request.charset) + error_raised = False + try: + GraphAPI(request).build_temporal_graph() + except HTTPBadRequest: + error_raised = True + assert error_raised, "A bad request error must have been raised in case of invalid SFC ID." + service_functions = dict(nginx={"measurement_name": "nginx", "response_time_field": "mean(avg_processing_time)"}, minio={"measurement_name": "minio_http", "response_time_field": "mean(total_processing_time)/mean(total_requests_count)"}) build_json_body = dict(database=test_db_name, retention_policy="autogen", service_function_chain_instance="test_sfc1_1", service_functions=service_functions) diff --git a/src/service/clmcservice/graphapi/utilities.py b/src/service/clmcservice/graphapi/utilities.py index a0a29d6..88e97b4 100644 --- a/src/service/clmcservice/graphapi/utilities.py +++ b/src/service/clmcservice/graphapi/utilities.py @@ -70,6 +70,9 @@ def validate_json_queries_body(body): assert GRAPH_BUILD_QUERY_PARAMS == set(body.keys()), "Invalid JSON query document." + sfc_i = body["service_function_chain_instance"] + assert len(sfc_i.split('_')) > 1, "Incorrect format of service function chain instance ID - use format <sfcID>_<instanceNum>" + assert type(body["service_functions"]) == dict, "The service function description should be represented with a dictionary." for sf in body["service_functions"]: -- GitLab