From 37301ea930889b5f6dc277b072b264d112d047b6 Mon Sep 17 00:00:00 2001 From: "Jonathan Thorpe (Sony)" Date: Thu, 9 May 2024 14:10:56 +0100 Subject: [PATCH] Fix IS-14 utility functions --- nmostesting/IS14Utils.py | 49 +++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/nmostesting/IS14Utils.py b/nmostesting/IS14Utils.py index 737ea5ec..a0e4a3ad 100644 --- a/nmostesting/IS14Utils.py +++ b/nmostesting/IS14Utils.py @@ -54,13 +54,19 @@ def _do_request(self, test, method, url, **kwargs): if not valid: raise NMOSTestException(test.FAIL(f"{r} for {method}: {url}")) - if r.status_code < 200 or r.status_code > 299: - raise NMOSTestException(test.FAIL(f"Unexpected status code: {r.status_code} for {method}: {url}")) try: self.validate_reference_datatype_schema(test, r.json(), "NcMethodResult", f"{method} :{url} ") - return r.json() except ValueError as e: raise NMOSTestException(test.FAIL(f"Error: {e.args[0]} for {method}: {url}")) + except NMOSTestException as e: + if r.status_code < 200 or r.status_code > 299: + raise NMOSTestException(test.FAIL(f"Unexpected status code: {r.status_code} for {method}: {url}")) + raise NMOSTestException(test.FAIL(f"Error: {e.args[0]} for {method}: {url}")) + + if r.status_code < 200 or r.status_code > 299: + raise NMOSTestException(test.FAIL(r.json())) + + return r.json() # Overridden functions def get_property(self, test, property_id, role_path, **kwargs): @@ -75,65 +81,66 @@ def get_property_value(self, test, property_id, role_path, **kwargs): def set_property(self, test, property_id, argument, role_path, **kwargs): """Get value of property from object. Raises NMOSTestException on error""" property_value_endpoint = self._create_property_value_endpoint(role_path, property_id) - return self._do_request(test, "PUT", property_value_endpoint, data={"value": argument}) + return self._do_request(test, "PUT", property_value_endpoint, json={"value": argument}) def invoke_method(self, test, method_id, argument, role_path, **kwargs): """Invoke method on Node. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, method_id) - return self._do_request(test, "PATCH", methods_endpoint, data={"argument": argument}) + return self._do_request(test, "PATCH", methods_endpoint, json={"argument": argument}) def get_sequence_item(self, test, property_id, index, role_path, **kwargs): """Get value from sequence property. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcObjectMethods.GET_SEQUENCE_ITEM.value) - return self._do_request(test, "PATCH", methods_endpoint, data={"argument": {"id": property_id, "index": index}}) + return self._do_request(test, "PATCH", methods_endpoint, + json={"arguments": {"id": property_id, "index": index}}) def get_sequence_item_value(self, test, property_id, index, role_path, **kwargs): - return self.get_sequence_item(test, property, index, role_path, **kwargs)["value"] + return self.get_sequence_item(test, property_id, index, role_path, **kwargs)["value"] def get_sequence_length(self, test, property_id, role_path, **kwargs): """Get sequence length. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcObjectMethods.GET_SEQUENCE_LENGTH.value) - return self._do_request(test, "PATCH", methods_endpoint, data={"argument": {"id": property_id}}) + return self._do_request(test, "PATCH", methods_endpoint, json={"arguments": {"id": property_id}})['value'] def get_member_descriptors(self, test, recurse, role_path, **kwargs): """Get BlockMemberDescritors for this block. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcBlockMethods.GET_MEMBERS_DESCRIPTOR.value) - return self._do_request(test, "PATCH", methods_endpoint, data={"argument": {"recurse": recurse}}) + return self._do_request(test, "PATCH", methods_endpoint, json={"arguments": {"recurse": recurse}})['value'] def find_members_by_path(self, test, path, role_path, **kwargs): """Query members based on role path. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcBlockMethods.FIND_MEMBERS_BY_PATH.value) - return self._do_request(test, "PATCH", methods_endpoint, data={"argument": {"path": path}}) + return self._do_request(test, "PATCH", methods_endpoint, json={"arguments": {"path": path}})['value'] def find_members_by_role(self, test, role, case_sensitive, match_whole_string, recurse, role_path, **kwargs): """Query members based on role. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcBlockMethods.FIND_MEMBERS_BY_ROLE.value) return self._do_request(test, "PATCH", methods_endpoint, - data={"argument": {"role": role, - "caseSensitive": case_sensitive, - "matchWholeString": match_whole_string, - "recurse": recurse}}) + json={"arguments": {"role": role, + "caseSensitive": case_sensitive, + "matchWholeString": match_whole_string, + "recurse": recurse}})['value'] def find_members_by_class_id(self, test, class_id, include_derived, recurse, role_path, **kwargs): """Query members based on class id. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcBlockMethods.FIND_MEMBERS_BY_CLASS_ID.value) return self._do_request(test, "PATCH", methods_endpoint, - data={"argument": {"classId": class_id, - "includeDerived": include_derived, - "recurse": recurse}}) + json={"arguments": {"classId": class_id, + "includeDerived": include_derived, + "recurse": recurse}})['value'] def get_control_class(self, test, class_id, include_inherited, role_path, **kwargs): """Query Class Manager for control class. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcClassManagerMethods.GET_CONTROL_CLASS.value) return self._do_request(test, "PATCH", methods_endpoint, - data={"argument": {"classId": class_id, - "includeInherited": include_inherited}}) + json={"arguments": {"classId": class_id, + "includeInherited": include_inherited}})['value'] def get_datatype(self, test, name, include_inherited, role_path, **kwargs): """Query Class Manager for datatype. Raises NMOSTestException on error""" methods_endpoint = self._create_methods_endpoint(role_path, NcClassManagerMethods.GET_DATATYPE.value) return self._do_request(test, "PATCH", methods_endpoint, - data={"argument": {"name": name, - "includeInherited": include_inherited}}) + json={"arguments": {"name": name, + "includeInherited": include_inherited}})['value'] # end of overridden functions