From c6e0864739b82e95798d64bea0473a132f511515 Mon Sep 17 00:00:00 2001 From: lo-simon Date: Wed, 13 Mar 2024 22:49:53 +0000 Subject: [PATCH 1/8] Use the GenericTest::do_request instead of raw request to enable HTTPS and AUTH support --- nmostesting/suites/IS1101Test.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index be103ffb..585c97d9 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2104,7 +2104,7 @@ def test_02_03_04(self, test): if len(inputs) == 0: return test.UNCLEAR("No input supports changing the base EDID") for input_id in inputs: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2120,7 +2120,7 @@ def test_02_03_04(self, test): return test.FAIL("Unable to find expected key: {}".format(e)) self.version[input_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2136,14 +2136,16 @@ def test_02_03_04(self, test): return test.FAIL("Unable to find expected key: {}".format(e)) self.version[sender_id] = version - response = requests.put( - self.compat_url + "inputs/" + input_id + "/edid/base/", - data=self.valid_edid, + valid, response = self.do_request("PUT", + self.compat_url + "inputs/" + input_id + "/edid/base", headers={"Content-Type": "application/octet-stream"}, - ) + data=self.valid_edid) + if not valid or response.status_code != 204: + return test.FAIL("Unexpected response from " + "the Stream Compatibility Management API: {}".format(response)) time.sleep(CONFIG.STABLE_STATE_DELAY) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2160,7 +2162,7 @@ def test_02_03_04(self, test): if version == self.version[input_id]: return test.FAIL("Version should change") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2177,7 +2179,7 @@ def test_02_03_04(self, test): if version == self.version[input_id]: return test.FAIL("Version should change") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.compat_url + "inputs/" + input_id + "/edid/base/" ) if not valid: From e92a93e7441d4838c3ed45e7c81f90fe64eca9ae Mon Sep 17 00:00:00 2001 From: lo-simon Date: Wed, 13 Mar 2024 23:01:09 +0000 Subject: [PATCH 2/8] Fix indent and remove unused request import --- nmostesting/suites/IS1101Test.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index 585c97d9..76aa743d 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -23,7 +23,6 @@ from .. import Config as CONFIG from ..IS04Utils import IS04Utils from ..IS05Utils import IS05Utils -import requests import datetime from ..IS11Utils import IS11Utils @@ -2137,9 +2136,9 @@ def test_02_03_04(self, test): self.version[sender_id] = version valid, response = self.do_request("PUT", - self.compat_url + "inputs/" + input_id + "/edid/base", - headers={"Content-Type": "application/octet-stream"}, - data=self.valid_edid) + self.compat_url + "inputs/" + input_id + "/edid/base", + headers={"Content-Type": "application/octet-stream"}, + data=self.valid_edid) if not valid or response.status_code != 204: return test.FAIL("Unexpected response from " "the Stream Compatibility Management API: {}".format(response)) From 0201393ac1a9f1394be4920c85c1f06aad270ca1 Mon Sep 17 00:00:00 2001 From: lo-simon Date: Wed, 13 Mar 2024 23:07:09 +0000 Subject: [PATCH 3/8] Fix indent --- nmostesting/suites/IS1101Test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index 76aa743d..f7b30d60 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2140,8 +2140,8 @@ def test_02_03_04(self, test): headers={"Content-Type": "application/octet-stream"}, data=self.valid_edid) if not valid or response.status_code != 204: - return test.FAIL("Unexpected response from " - "the Stream Compatibility Management API: {}".format(response)) + return test.FAIL("Unexpected response from the Stream Compatibility Management API: {}" + .format(response)) time.sleep(CONFIG.STABLE_STATE_DELAY) valid, response = self.do_request( From 476817024b5ac247f622fad375326725bd18d700 Mon Sep 17 00:00:00 2001 From: lo-simon Date: Thu, 14 Mar 2024 10:58:12 +0000 Subject: [PATCH 4/8] Replace TestHelper with self --- nmostesting/suites/IS1101Test.py | 205 +++++++++++++++---------------- 1 file changed, 102 insertions(+), 103 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index f7b30d60..598feff1 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -19,7 +19,6 @@ from requests.compat import json from ..NMOSUtils import NMOSUtils from ..GenericTest import GenericTest, NMOSInitException, NMOSTestException -from .. import TestHelper from .. import Config as CONFIG from ..IS04Utils import IS04Utils from ..IS05Utils import IS05Utils @@ -192,7 +191,7 @@ def test_01_00(self, test): if state == "no_signal" or state == "awaiting_signal": if state == "awaiting_signal": for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + id + "/properties/" ) if not valid: @@ -548,7 +547,7 @@ def test_02_00(self, test): if len(self.senders) > 0: for sender_id in self.senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -569,7 +568,7 @@ def test_02_01_01(self, test): "Verify that IS-11 Senders exist on the Node API as Senders" if len(self.senders) > 0: for sender_id in self.senders: - valid, response = TestHelper.do_request("GET", self.node_url + "senders/" + sender_id) + valid, response = self.do_request("GET", self.node_url + "senders/" + sender_id) if not valid: return test.FAIL("Unexpected response from the Node API: {}".format(response)) if response.status_code != 200: @@ -594,7 +593,7 @@ def test_02_02_01(self, test): """ if len(self.senders) > 0: for sender_id in self.senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -614,7 +613,7 @@ def test_02_02_01(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -649,7 +648,7 @@ def test_02_02_03(self, test): """ if len(self.senders) > 0: for sender_id in self.senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -697,7 +696,7 @@ def test_02_02_03_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/constraints/supported/", ) @@ -726,7 +725,7 @@ def test_02_02_03_02(self, test): return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/constraints/supported/", ) @@ -756,7 +755,7 @@ def test_02_02_04_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -777,7 +776,7 @@ def test_02_02_04_01(self, test): ] } self.empty_constraints[sender_id] = {"constraint_sets": []} - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.grain_rate_constraints[sender_id], @@ -788,7 +787,7 @@ def test_02_02_04_01(self, test): return test.FAIL( "The sender {} constraints change has failed: {}".format(sender_id, response.json()) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -801,7 +800,7 @@ def test_02_02_04_01(self, test): if version == self.version[sender_id]: return test.FAIL("Versions {} and {} are different".format(version, self.version[sender_id])) self.version[sender_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_constraints_active_url(sender_id) ) if not valid: @@ -816,7 +815,7 @@ def test_02_02_04_01(self, test): self.grain_rate_constraints[sender_id]["constraint_sets"], ): return test.FAIL("The sender {} contraints are different".format(sender_id)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -826,7 +825,7 @@ def test_02_02_04_01(self, test): return test.FAIL( "The sender {} constraints cannot be deleted".format(sender_id) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -839,7 +838,7 @@ def test_02_02_04_01(self, test): if version == self.version[sender_id]: return test.FAIL("Versions {} and {} are different".format(version, self.version[sender_id])) self.version[sender_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_constraints_active_url(sender_id) ) if not valid: @@ -861,7 +860,7 @@ def test_02_02_04_02(self, test): if len(self.flow_format_audio) == 0: return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -882,7 +881,7 @@ def test_02_02_04_02(self, test): ] } self.empty_constraints[sender_id] = {"constraint_sets": []} - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.sample_rate_constraints[sender_id], @@ -893,7 +892,7 @@ def test_02_02_04_02(self, test): return test.FAIL( "The sender {} constraints change has failed: {}".format(sender_id, response.json()) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -907,7 +906,7 @@ def test_02_02_04_02(self, test): return test.FAIL("Versions {} and {} are different".format(version, self.version[sender_id])) self.version[sender_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_constraints_active_url(sender_id) ) if not valid: @@ -925,7 +924,7 @@ def test_02_02_04_02(self, test): return test.FAIL("The constraint applied does not match the active" "constraint retrieved from the sender {}".format(sender_id)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -936,7 +935,7 @@ def test_02_02_04_02(self, test): "The sender {} constraints cannot be deleted".format(sender_id) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -950,7 +949,7 @@ def test_02_02_04_02(self, test): return test.FAIL("Versions {} and {} are different".format(version, self.version[sender_id])) self.version[sender_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_constraints_active_url(sender_id) ) if not valid: @@ -973,7 +972,7 @@ def test_02_02_05_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -986,7 +985,7 @@ def test_02_02_05_01(self, test): state = response.json()["state"] if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1025,7 +1024,7 @@ def test_02_02_05_01(self, test): ] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1038,7 +1037,7 @@ def test_02_02_05_01(self, test): .format(sender_id, response.json()) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1052,7 +1051,7 @@ def test_02_02_05_01(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1070,7 +1069,7 @@ def test_02_02_05_01(self, test): if state != "constrained": return test.FAIL("Expected state of sender {} is \"constrained\", got \"{}\"".format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1095,7 +1094,7 @@ def test_02_02_05_01(self, test): .format(sender_id) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1117,7 +1116,7 @@ def test_02_02_05_02(self, test): return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1131,7 +1130,7 @@ def test_02_02_05_02(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1159,7 +1158,7 @@ def test_02_02_05_02(self, test): } ] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1172,7 +1171,7 @@ def test_02_02_05_02(self, test): .format(sender_id, response.json()) ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1186,7 +1185,7 @@ def test_02_02_05_02(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1204,7 +1203,7 @@ def test_02_02_05_02(self, test): if state != "constrained": return test.FAIL("Expected state of sender {} is \"constrained\", got \"{}\"".format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1222,7 +1221,7 @@ def test_02_02_05_02(self, test): if self.flow_sample_rate[sender_id] != flow_sample_rate: return test.FAIL("Different sample rate") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1243,7 +1242,7 @@ def test_02_02_06_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1256,7 +1255,7 @@ def test_02_02_06_01(self, test): state = response.json()["state"] if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1275,7 +1274,7 @@ def test_02_02_06_01(self, test): return test.FAIL("Expected state of sender {} is \"unconstrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1333,7 +1332,7 @@ def test_02_02_06_01(self, test): self.constraints[sender_id] = {"constraint_sets": [constraint_set]} - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1378,7 +1377,7 @@ def test_02_02_06_01(self, test): return test.FAIL("Different component_depth") except Exception: pass - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1398,7 +1397,7 @@ def test_02_02_06_02(self, test): if len(self.flow_format_audio) == 0: return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1409,7 +1408,7 @@ def test_02_02_06_02(self, test): state = response.json()["state"] if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1427,7 +1426,7 @@ def test_02_02_06_02(self, test): if state != "unconstrained": return test.FAIL("Expected state of sender {} is \"unconstrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1441,7 +1440,7 @@ def test_02_02_06_02(self, test): self.flow = self.is11_utils.get_flows(self.node_url, sender["flow_id"]) constraint_set = {} - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "sources/" + self.flow["source_id"] ) if not valid: @@ -1481,7 +1480,7 @@ def test_02_02_06_02(self, test): except Exception: pass self.constraints[sender_id] = {"constraint_sets": [constraint_set]} - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1495,7 +1494,7 @@ def test_02_02_06_02(self, test): ) new_flow = self.is11_utils.get_flows(self.node_url, sender["flow_id"]) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "sources/" + self.flow["source_id"] ) if not valid: @@ -1523,7 +1522,7 @@ def test_02_02_06_02(self, test): return test.FAIL("Different sample_depth") except Exception: pass - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1541,7 +1540,7 @@ def test_02_02_07_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1554,7 +1553,7 @@ def test_02_02_07_01(self, test): state = response.json()["state"] if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1574,7 +1573,7 @@ def test_02_02_07_01(self, test): return test.FAIL("Expected state of sender {} is \"unconstrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1678,7 +1677,7 @@ def test_02_02_07_01(self, test): self.constraints[sender_id] = { "constraint_sets": [constraint_set0, constraint_set0] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1726,7 +1725,7 @@ def test_02_02_07_01(self, test): except Exception: pass - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1744,7 +1743,7 @@ def test_02_02_07_02(self, test): return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1755,7 +1754,7 @@ def test_02_02_07_02(self, test): state = response.json()["state"] if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -1774,7 +1773,7 @@ def test_02_02_07_02(self, test): return test.FAIL("Expected state of sender {} is \"unconstrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -1786,7 +1785,7 @@ def test_02_02_07_02(self, test): ) sender = response.json() self.flow = self.is11_utils.get_flows(self.node_url, sender["flow_id"]) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "sources/" + self.flow["source_id"] ) if not valid: @@ -1863,7 +1862,7 @@ def test_02_02_07_02(self, test): "constraint_sets": [constraint_set0, constraint_set1] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.build_constraints_active_url(sender_id), json=self.constraints[sender_id], @@ -1877,7 +1876,7 @@ def test_02_02_07_02(self, test): ) new_flow = self.is11_utils.get_flows(self.node_url, sender["flow_id"]) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "sources/" + self.flow["source_id"] ) if not valid: @@ -1905,7 +1904,7 @@ def test_02_02_07_02(self, test): return test.FAIL("Different sample_depth") except Exception: pass - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.build_constraints_active_url(sender_id), ) @@ -1922,7 +1921,7 @@ def test_02_03_00(self, test): Verify senders supporting inputs """ for input in self.senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + input + "/inputs/" ) if not valid: @@ -1947,7 +1946,7 @@ def test_02_03_01(self, test): """ if len(self.input_senders) != 0: for sender_id in self.input_senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/inputs/" ) if not valid: @@ -1976,7 +1975,7 @@ def _test_02_03_02(self, test): """ if len(self.input_senders) != 0: for sender_id in self.input_senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/inputs/" ) if not valid: @@ -2018,7 +2017,7 @@ def test_02_03_03(self, test): if len(self.input_senders) > 0: for sender_id in self.input_senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -2038,7 +2037,7 @@ def test_02_03_03(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -2072,7 +2071,7 @@ def test_02_03_04(self, test): """ if len(self.input_senders) != 0: for sender_id in self.input_senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/inputs/" ) if not valid: @@ -2196,7 +2195,7 @@ def test_02_03_05_01(self, test): return test.UNCLEAR("There is no video format") for sender_id in self.flow_format_video: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/inputs/" ) if not valid: @@ -2234,7 +2233,7 @@ def test_02_03_05_01(self, test): if len(inputs) == 0: return test.UNCLEAR("No input supports changing the base EDID") for input_id in inputs: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2258,7 +2257,7 @@ def test_02_03_05_01(self, test): self.version[input_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2295,7 +2294,7 @@ def test_02_03_05_01(self, test): } ] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.compat_url + "senders/" + sender_id + "/constraints/active/", json=self.another_grain_rate_constraints[sender_id], @@ -2314,7 +2313,7 @@ def test_02_03_05_01(self, test): if response.status_code == 422: print("Device does not accept grain_rate constraint") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/edid/effective/", ) @@ -2333,7 +2332,7 @@ def test_02_03_05_01(self, test): if response.content == default_edid: print("Grain rate constraint are not changing effective EDID") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2357,7 +2356,7 @@ def test_02_03_05_01(self, test): if version == self.version[input_id]: return test.FAIL("Version should change") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2387,7 +2386,7 @@ def test_02_03_05_01(self, test): seconds=15 ): time.sleep(CONFIG.HTTP_TIMEOUT) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2412,7 +2411,7 @@ def test_02_03_05_01(self, test): else: stable_count += 1 - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/status/", time.sleep(20), @@ -2441,7 +2440,7 @@ def test_02_03_05_01(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -2467,7 +2466,7 @@ def test_02_03_05_01(self, test): return test.FAIL("Expected state of sender {} is \"constrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2492,7 +2491,7 @@ def test_02_03_05_01(self, test): if flow_id is None: return test.FAIL("flow_id is null") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "flows/" + flow_id ) if not valid: @@ -2520,7 +2519,7 @@ def test_02_03_05_01(self, test): return test.FAIL( "The flow_grain_rate does not match the constraint" ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.compat_url + "senders/" + sender_id + "/constraints/active/", ) @@ -2547,7 +2546,7 @@ def test_02_03_05_02(self, test): return test.UNCLEAR("There is no audio format") for sender_id in self.flow_format_audio: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/inputs/" ) if not valid: @@ -2585,7 +2584,7 @@ def test_02_03_05_02(self, test): if len(inputs) == 0: return test.UNCLEAR("No input supports changing the base EDID") for input_id in inputs: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2608,7 +2607,7 @@ def test_02_03_05_02(self, test): return test.FAIL("Unable to find expected key: {}".format(e)) self.version[input_id] = version - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2644,7 +2643,7 @@ def test_02_03_05_02(self, test): } ] } - valid, response = TestHelper.do_request( + valid, response = self.do_request( "PUT", self.compat_url + "senders/" + sender_id + "/constraints/active/", json=self.another_sample_rate_constraints[sender_id], @@ -2663,7 +2662,7 @@ def test_02_03_05_02(self, test): if response.status_code == 422: print("Device does not accept grain_rate constraint") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/edid/effective/", ) @@ -2682,7 +2681,7 @@ def test_02_03_05_02(self, test): if response.content == default_edid: print("Grain rate constraint are not changing effective EDID") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "inputs/" + input_id + "/properties/" ) if not valid: @@ -2706,7 +2705,7 @@ def test_02_03_05_02(self, test): if version == self.version[input_id]: return test.FAIL("Version should change") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2735,7 +2734,7 @@ def test_02_03_05_02(self, test): seconds=15 ): time.sleep(CONFIG.HTTP_TIMEOUT) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2760,7 +2759,7 @@ def test_02_03_05_02(self, test): else: stable_count += 1 - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/status/", time.sleep(20) ) @@ -2788,7 +2787,7 @@ def test_02_03_05_02(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -2814,7 +2813,7 @@ def test_02_03_05_02(self, test): return test.FAIL("Expected state of sender {} is \"constrained\", got \"{}\"" .format(sender_id, state)) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "senders/" + sender_id ) if not valid: @@ -2837,7 +2836,7 @@ def test_02_03_05_02(self, test): return test.FAIL("Unable to find expected key: {}".format(e)) if flow_id is None: return test.FAIL("flow_id is null") - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "flows/" + flow_id ) if not valid: @@ -2864,7 +2863,7 @@ def test_02_03_05_02(self, test): return test.FAIL( "The flow_grain_rate does not match the constraint" ) - valid, response = TestHelper.do_request( + valid, response = self.do_request( "DELETE", self.compat_url + "senders/" + sender_id + "/constraints/active/", ) @@ -2888,7 +2887,7 @@ def test_02_04(self, test): Verify senders not supporting inputs """ for input in self.senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + input + "/inputs/" ) if not valid: @@ -2922,7 +2921,7 @@ def test_02_04_01(self, test): if len(self.not_input_senders) == 0: return test.UNCLEAR("All senders support inputs") for sender_id in self.not_input_senders: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "senders/" + sender_id + "/status/", ) @@ -2949,7 +2948,7 @@ def test_02_04_01(self, test): if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.build_sender_status_url(sender_id) ) if not valid: @@ -3021,7 +3020,7 @@ def test_04_01_01(self, test): if len(self.receivers) == 0: return test.UNCLEAR("No IS-11 receivers") for receiver_id in self.receivers: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "receivers/" + receiver_id ) if not valid: @@ -3051,7 +3050,7 @@ def test_04_02_01(self, test): if len(self.receivers) == 0: return test.UNCLEAR("No IS-11 receivers") for receiver_id in self.receivers: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.compat_url + "receivers/" + receiver_id + "/status/" ) if not valid: @@ -3071,7 +3070,7 @@ def test_04_02_02(self, test): if len(self.receivers) == 0: return test.UNCLEAR("No IS-11 receivers") for receiver_id in self.receivers: - valid, response = TestHelper.do_request( + valid, response = self.do_request( "GET", self.node_url + "receivers/" + receiver_id ) if not valid: @@ -3196,7 +3195,7 @@ def test_04_03_01_01(self, test): " and IS11_REFERENCE_SENDER_CONNECTION_API_URL in Config.py") for output_id in self.outputs: - valid, response = TestHelper.do_request('GET', self.compat_url + "outputs/" + output_id + "/properties/") + valid, response = self.do_request('GET', self.compat_url + "outputs/" + output_id + "/properties/") if not valid: return test.FAIL("Unexpected response from the streamcompatibility API: {}".format(response)) if response.status_code != 200: @@ -3212,7 +3211,7 @@ def test_04_03_01_01(self, test): if state != "signal_present": for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request('GET', self.build_output_properties_url(output_id)) + valid, response = self.do_request('GET', self.build_output_properties_url(output_id)) if not valid: return test.FAIL("Unexpected response from the streamcompatibility API: {}".format(response)) if response.status_code != 200: @@ -3331,7 +3330,7 @@ def test_04_03_02_01(self, test): " and IS11_REFERENCE_SENDER_CONNECTION_API_URL in Config.py") for output_id in self.outputs: - valid, response = TestHelper.do_request('GET', self.compat_url + "outputs/" + output_id + "/properties/") + valid, response = self.do_request('GET', self.compat_url + "outputs/" + output_id + "/properties/") if not valid: return test.FAIL("Unexpected response from the streamcompatibility API: {}".format(response)) if response.status_code != 200: @@ -3346,7 +3345,7 @@ def test_04_03_02_01(self, test): if state != "signal_present": for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): - valid, response = TestHelper.do_request('GET', self.build_output_properties_url(output_id)) + valid, response = self.do_request('GET', self.build_output_properties_url(output_id)) if not valid: return test.FAIL("Unexpected response from the streamcompatibility API: {}".format(response)) if response.status_code != 200: From 31aba4abaaed8bccf352612aa270fd11617d8bf0 Mon Sep 17 00:00:00 2001 From: lo-simon Date: Thu, 18 Apr 2024 08:52:16 +0100 Subject: [PATCH 5/8] do_request doesn't take 4 parameters --- nmostesting/suites/IS1101Test.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index 598feff1..b924b60f 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2413,8 +2413,7 @@ def test_02_03_05_01(self, test): valid, response = self.do_request( "GET", - self.compat_url + "senders/" + sender_id + "/status/", - time.sleep(20), + self.compat_url + "senders/" + sender_id + "/status/" ) if not valid: @@ -2761,7 +2760,7 @@ def test_02_03_05_02(self, test): valid, response = self.do_request( "GET", - self.compat_url + "senders/" + sender_id + "/status/", time.sleep(20) + self.compat_url + "senders/" + sender_id + "/status/" ) if not valid: return test.FAIL( From 5e015e2f8e08f33b065b942032c44528408ec86f Mon Sep 17 00:00:00 2001 From: lo-simon Date: Thu, 18 Apr 2024 12:37:10 +0100 Subject: [PATCH 6/8] Update tests description --- nmostesting/suites/IS1101Test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index b924b60f..7c31a6b9 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2189,7 +2189,7 @@ def test_02_03_04(self, test): def test_02_03_05_01(self, test): """ - Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints + Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints (video) """ if len(self.flow_format_video) == 0: return test.UNCLEAR("There is no video format") @@ -2539,7 +2539,7 @@ def test_02_03_05_01(self, test): def test_02_03_05_02(self, test): """ - Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints + Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints (audio) """ if len(self.flow_format_audio) == 0: return test.UNCLEAR("There is no audio format") From 09fc19dd83c0e86ccce2ea2b16504ac8d19e600a Mon Sep 17 00:00:00 2001 From: lo-simon Date: Thu, 18 Apr 2024 12:40:07 +0100 Subject: [PATCH 7/8] Correct test_02_03_05_02 warning message --- nmostesting/suites/IS1101Test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index 7c31a6b9..a6fcdaa6 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2782,7 +2782,7 @@ def test_02_03_05_02(self, test): return test.FAIL("Unable to find expected key: {}".format(e)) if state == "active_constraints_violation": - return test.UNCLEAR("This device can not constraint grain_rate") + return test.UNCLEAR("This device can not constraint sample_rate") if state in ["awaiting_essence", "no_essence"]: for i in range(0, CONFIG.STABLE_STATE_ATTEMPTS): From 388238841fdea245ced813cca900fbbbc368e472 Mon Sep 17 00:00:00 2001 From: lo-simon Date: Thu, 18 Apr 2024 12:51:56 +0100 Subject: [PATCH 8/8] Shorten the lines to prevent flake8 line too lomg error --- nmostesting/suites/IS1101Test.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/nmostesting/suites/IS1101Test.py b/nmostesting/suites/IS1101Test.py index a6fcdaa6..b1acb525 100644 --- a/nmostesting/suites/IS1101Test.py +++ b/nmostesting/suites/IS1101Test.py @@ -2189,7 +2189,8 @@ def test_02_03_04(self, test): def test_02_03_05_01(self, test): """ - Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints (video) + Verify for inputs supporting EDID that the version and + the effective EDID change when applying constraints (video) """ if len(self.flow_format_video) == 0: return test.UNCLEAR("There is no video format") @@ -2539,7 +2540,8 @@ def test_02_03_05_01(self, test): def test_02_03_05_02(self, test): """ - Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints (audio) + Verify for inputs supporting EDID that the version and + the effective EDID change when applying constraints (audio) """ if len(self.flow_format_audio) == 0: return test.UNCLEAR("There is no audio format")