From 061b556952a38ced8529ac1d7b4b8e261a81e1bd Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Fri, 6 Feb 2026 16:57:37 +0100 Subject: [PATCH] MT#62763 Fix pycodestyle issues - Add pyproject.toml and tox.ini with consistent black and pycodestyle settings. - Run black for consistent coding style. - Manually fix remaining issues: + Split overlong strings. + Reflow comments. Change-Id: I731497f3a08bd70eb32ce452d10c00be6dd096f7 --- docs/conf.py | 23 +- pyproject.toml | 7 + t/auto-daemon-tests-websocket.py | 378 +++++++++++++++++++------------ tox.ini | 2 + utils/ng-load-tester.py | 12 +- 5 files changed, 263 insertions(+), 159 deletions(-) create mode 100644 pyproject.toml create mode 100644 tox.ini diff --git a/docs/conf.py b/docs/conf.py index 83b386e6b..347d1dcb3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -8,28 +8,27 @@ from datetime import date -project = 'rtpengine' -copyright = str(date.today().year) + ', Sipwise' -author = 'Sipwise' -release = 'master' +project = "rtpengine" +copyright = str(date.today().year) + ", Sipwise" +author = "Sipwise" +release = "master" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration -extensions = ["myst_parser", - "sphinx_rtd_theme"] +extensions = ["myst_parser", "sphinx_rtd_theme"] myst_heading_anchors = 3 -templates_path = ['_templates'] -exclude_patterns = ['_build'] +templates_path = ["_templates"] +exclude_patterns = ["_build"] -master_doc = 'index' +master_doc = "index" # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'sphinx_rtd_theme' -htmlhelp_basename = 'rtpenginedoc' +html_theme = "sphinx_rtd_theme" +htmlhelp_basename = "rtpenginedoc" # Prevent double dashes -- from becoming single em dashes -smartquotes_action = 'qe' +smartquotes_action = "qe" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..eb3b35ac9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[tool.black] +# Match line-length expected by pycodestyle. +line-length = 79 +# Current version in Debian trixie. +target-version = ['py313'] +# Enable preview features, expected by pycodestyle. +preview = true diff --git a/t/auto-daemon-tests-websocket.py b/t/auto-daemon-tests-websocket.py index 4fb695be4..b02967c09 100644 --- a/t/auto-daemon-tests-websocket.py +++ b/t/auto-daemon-tests-websocket.py @@ -13,7 +13,6 @@ import uuid from websockets import connect - eventloop = None @@ -22,10 +21,12 @@ async def make_ws(cls, proto): from websockets import __version__ ws_ver = str(__version__) - ws_ver = '.'.join(ws_ver.split('.')[0:2]) + ws_ver = ".".join(ws_ver.split(".")[0:2]) if sys.version_info >= (3, 10) and float(ws_ver) <= 9.1: python_v = python_version() - msg = "python3-websocket {} unsupported in {}".format(__version__, python_v) + msg = "python3-websocket {} unsupported in {}".format( + __version__, python_v + ) raise unittest.SkipTest(msg) for _ in range(1, 300): try: @@ -120,7 +121,8 @@ class TestWSCli(unittest.TestCase): eventloop.run_until_complete(close_ws(cls)) def testListNumsessions(self): - # race condition here if this runs at the same as the janus test (creates call) + # Race condition here if this runs at the same as the janus test + # (creates call). eventloop.run_until_complete(testIO(self, "list numsessions")) self.assertEqual( self._res, @@ -180,16 +182,18 @@ class TestNG(unittest.TestCase): async def _testQueuedStats(self): futures = {} for idx in range(20): - cookie = f'test{idx}' - future = self._ws[0].send(cookie + ' ' + json.dumps({"command": "statistics"})) + cookie = f"test{idx}" + future = self._ws[0].send( + cookie + " " + json.dumps({"command": "statistics"}) + ) futures[cookie] = future for future in futures.values(): await future for idx in range(20): msg = await asyncio.wait_for(self._ws[0].recv(), timeout=10) if isinstance(msg, bytes): - msg = msg.decode('utf-8') - cpos = msg.find(' ') + msg = msg.decode("utf-8") + cpos = msg.find(" ") cookie = msg[0:cpos] self.assertIn(cookie, futures) del futures[cookie] @@ -211,7 +215,9 @@ class TestWSJanus(unittest.TestCase): eventloop.run_until_complete( testIOJson(self, {"janus": "ping", "transaction": "test123"}) ) - self.assertEqual(self._res, {"janus": "pong", "transaction": "test123"}) + self.assertEqual( + self._res, {"janus": "pong", "transaction": "test123"} + ) def testPingNoTS(self): eventloop.run_until_complete(testIOJson(self, {"janus": "ping"})) @@ -239,7 +245,9 @@ class TestWSJanus(unittest.TestCase): "janus": "server_info", "name": "rtpengine Janus interface", "plugins": { - "janus.plugin.videoroom": {"name": "rtpengine Janus videoroom"} + "janus.plugin.videoroom": { + "name": "rtpengine Janus videoroom" + } }, "transaction": "foobar", }, @@ -260,7 +268,9 @@ class TestVideoroom(unittest.TestCase): # make sure we have a matching connection if conn_num >= len(self._ws): eventloop.run_until_complete( - get_more_ws(self, "janus-protocol", conn_num - len(self._ws) + 1) + get_more_ws( + self, "janus-protocol", conn_num - len(self._ws) + 1 + ) ) token = str(uuid.uuid4()) @@ -278,7 +288,10 @@ class TestVideoroom(unittest.TestCase): ) self.assertEqual( self._res, - {"janus": "success", "data": {"plugins": ["janus.plugin.videoroom"]}}, + { + "janus": "success", + "data": {"plugins": ["janus.plugin.videoroom"]}, + }, ) # create session @@ -295,7 +308,9 @@ class TestVideoroom(unittest.TestCase): ) session = self._res["data"]["id"] self.assertIsInstance(session, int) - self.assertEqual(self._res, {"janus": "success", "data": {"id": session}}) + self.assertEqual( + self._res, {"janus": "success", "data": {"id": session}} + ) return (token, session) @@ -303,7 +318,7 @@ class TestVideoroom(unittest.TestCase): # start fresh self.closeConns() - (token, session) = self.startSession() + token, session = self.startSession() handle = self.createHandle(token, session) @@ -416,7 +431,11 @@ class TestVideoroom(unittest.TestCase): self.assertNotEqual(handle, session) self.assertEqual( self._res, - {"janus": "success", "session_id": session, "data": {"id": handle}}, + { + "janus": "success", + "session_id": session, + "data": {"id": handle}, + }, ) return handle @@ -474,17 +493,18 @@ class TestVideoroom(unittest.TestCase): return feed def testKeepalive(self): - (token, session) = self.startSession() + token, session = self.startSession() eventloop.run_until_complete( testIOJanus( - self, {"janus": "keepalive", "token": token, "session_id": session} + self, + {"janus": "keepalive", "token": token, "session_id": session}, ) ) self.assertEqual(self._res, {"janus": "ack", "session_id": session}) def testVideoroomWebRTC(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() # timeout test eventloop.run_until_complete(asyncio.sleep(3)) @@ -660,7 +680,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -771,9 +791,10 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomWebRTCAlt(self): - # alternative usage: publisher == controller, no extra feed_id, no room specified + # alternative usage: publisher == controller, no extra feed_id, + # no room specified - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() # timeout test eventloop.run_until_complete(asyncio.sleep(3)) @@ -921,7 +942,9 @@ class TestVideoroom(unittest.TestCase): # followed by the attached event eventloop.run_until_complete(testIJanus(self)) self.assertEqual(len(self._res["plugindata"]["data"]["streams"]), 1) - self.assertEqual(feed, self._res["plugindata"]["data"]["streams"][0]["feed_id"]) + self.assertEqual( + feed, self._res["plugindata"]["data"]["streams"][0]["feed_id"] + ) self.assertNotEqual(feed, control_handle) self.assertNotEqual(feed, session) self.assertNotEqual(feed, room) @@ -948,7 +971,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -1064,7 +1087,7 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomSDESDTLS(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) @@ -1095,11 +1118,11 @@ class TestVideoroom(unittest.TestCase): "t=0 0\r\n" "m=audio 30000 RTP/SAVP 8 0 96\r\n" "a=rtpmap:96 opus/48000\r\n" - "a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:cJOJ7kxQjhFBp2fP6AYjs3vKw7CeBdWZCj0isbJv\r\n" - "a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:VAzLKvoE3jG9cdH/AZsl/ZqWNXrUzyM4Gw6chrFr\r\n" - "a=crypto:3 AES_256_CM_HMAC_SHA1_80 inline:8AbZePWwsKhLGX3GlXA+yHYPQ3cgraer/9DkFJYCOPZZy3o9wC0NIbIFYZfyHw==\r\n" - "a=crypto:4 AES_256_CM_HMAC_SHA1_32 inline:2GLk3p/csdno4KlGO1TxCVaEt+bifmDlQ5NjnCb5cJYPURiGRSTBEtEq37db8g==\r\n" - "a=fingerprint:sha-256 1A:20:98:16:CA:26:8C:33:62:0B:70:94:73:A0:9B:30:00:1A:EA:26:FC:7D:84:8B:F1:F9:52:2D:A7:92:C5:3D\r\n" + "a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:cJOJ7kxQjhFBp2fP6AYjs3vKw7CeBdWZCj0isbJv\r\n" # noqa: E501 + "a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:VAzLKvoE3jG9cdH/AZsl/ZqWNXrUzyM4Gw6chrFr\r\n" # noqa: E501 + "a=crypto:3 AES_256_CM_HMAC_SHA1_80 inline:8AbZePWwsKhLGX3GlXA+yHYPQ3cgraer/9DkFJYCOPZZy3o9wC0NIbIFYZfyHw==\r\n" # noqa: E501 + "a=crypto:4 AES_256_CM_HMAC_SHA1_32 inline:2GLk3p/csdno4KlGO1TxCVaEt+bifmDlQ5NjnCb5cJYPURiGRSTBEtEq37db8g==\r\n" # noqa: E501 + "a=fingerprint:sha-256 1A:20:98:16:CA:26:8C:33:62:0B:70:94:73:A0:9B:30:00:1A:EA:26:FC:7D:84:8B:F1:F9:52:2D:A7:92:C5:3D\r\n" # noqa: E501 "a=setup:actpass\r\n" "a=sendonly\r\n" ), @@ -1165,7 +1188,7 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomSDES(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) @@ -1196,10 +1219,10 @@ class TestVideoroom(unittest.TestCase): "t=0 0\r\n" "m=audio 30000 RTP/SAVP 8 0 96\r\n" "a=rtpmap:96 opus/48000\r\n" - "a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:cJOJ7kxQjhFBp2fP6AYjs3vKw7CeBdWZCj0isbJv\r\n" - "a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:VAzLKvoE3jG9cdH/AZsl/ZqWNXrUzyM4Gw6chrFr\r\n" - "a=crypto:3 AES_256_CM_HMAC_SHA1_80 inline:8AbZePWwsKhLGX3GlXA+yHYPQ3cgraer/9DkFJYCOPZZy3o9wC0NIbIFYZfyHw==\r\n" - "a=crypto:4 AES_256_CM_HMAC_SHA1_32 inline:2GLk3p/csdno4KlGO1TxCVaEt+bifmDlQ5NjnCb5cJYPURiGRSTBEtEq37db8g==\r\n" + "a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:cJOJ7kxQjhFBp2fP6AYjs3vKw7CeBdWZCj0isbJv\r\n" # noqa: E501 + "a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:VAzLKvoE3jG9cdH/AZsl/ZqWNXrUzyM4Gw6chrFr\r\n" # noqa: E501 + "a=crypto:3 AES_256_CM_HMAC_SHA1_80 inline:8AbZePWwsKhLGX3GlXA+yHYPQ3cgraer/9DkFJYCOPZZy3o9wC0NIbIFYZfyHw==\r\n" # noqa: E501 + "a=crypto:4 AES_256_CM_HMAC_SHA1_32 inline:2GLk3p/csdno4KlGO1TxCVaEt+bifmDlQ5NjnCb5cJYPURiGRSTBEtEq37db8g==\r\n" # noqa: E501 "a=sendonly\r\n" ), }, @@ -1262,7 +1285,7 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomDTLS(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) @@ -1294,7 +1317,7 @@ class TestVideoroom(unittest.TestCase): "m=audio 30000 UDP/TLS/RTP/SAVPF 8 0 96\r\n" "a=mid:audio\r\n" "a=rtpmap:96 opus/48000\r\n" - "a=fingerprint:sha-256 1A:20:98:16:CA:26:8C:33:62:0B:70:94:73:A0:9B:30:00:1A:EA:26:FC:7D:84:8B:F1:F9:52:2D:A7:92:C5:3D\r\n" + "a=fingerprint:sha-256 1A:20:98:16:CA:26:8C:33:62:0B:70:94:73:A0:9B:30:00:1A:EA:26:FC:7D:84:8B:F1:F9:52:2D:A7:92:C5:3D\r\n" # noqa: E501 "a=setup:actpass\r\n" "a=sendonly\r\n" ), @@ -1361,7 +1384,7 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomWebrtcup(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) @@ -1458,7 +1481,8 @@ class TestVideoroom(unittest.TestCase): # send fake RTP to trigger event m = pub_sock.send( - b"\x80\x08\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x08\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ) # wait for webrtcup event @@ -1487,7 +1511,7 @@ class TestVideoroom(unittest.TestCase): pub_sock.close() def testVideoroomWebRTCVideo(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) @@ -1517,24 +1541,24 @@ class TestVideoroom(unittest.TestCase): "t=0 0\r\n" "a=group:BUNDLE 0 1\r\n" "a=extmap-allow-mixed\r\n" - "a=msid-semantic: WMS hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" + "a=msid-semantic: WMS hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 "a=ice-options:trickle\r\n" - "m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\n" + "m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\n" # noqa: E501 "c=IN IP4 0.0.0.0\r\n" "a=rtcp:9 IN IP4 0.0.0.0\r\n" "a=ice-ufrag:+JrN\r\n" "a=ice-pwd:TMWORlSHr9fd+0bUNXnlBs5D\r\n" - "a=fingerprint:sha-256 FD:56:1A:DB:3E:7B:8E:0B:75:4E:2E:49:1A:91:52:E4:69:9E:66:91:FF:34:A2:50:58:72:C0:8E:C2:87:CA:1F\r\n" + "a=fingerprint:sha-256 FD:56:1A:DB:3E:7B:8E:0B:75:4E:2E:49:1A:91:52:E4:69:9E:66:91:FF:34:A2:50:58:72:C0:8E:C2:87:CA:1F\r\n" # noqa: E501 "a=setup:actpass\r\n" "a=mid:0\r\n" - "a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" - "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" - "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" + "a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n" # noqa: E501 + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 + "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" # noqa: E501 + "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" # noqa: E501 + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 "a=sendonly\r\n" - "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" + "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 "a=rtcp-mux\r\n" "a=rtpmap:111 opus/48000/2\r\n" "a=rtcp-fb:111 transport-cc\r\n" @@ -1552,30 +1576,30 @@ class TestVideoroom(unittest.TestCase): "a=rtpmap:113 telephone-event/16000\r\n" "a=rtpmap:126 telephone-event/8000\r\n" "a=ssrc:677770262 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:677770262 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" - "a=ssrc:677770262 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:677770262 label:2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" - "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 35 36 124 119 123\r\n" + "a=ssrc:677770262 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 + "a=ssrc:677770262 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:677770262 label:2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 + "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 35 36 124 119 123\r\n" # noqa: E501 "c=IN IP4 0.0.0.0\r\n" "a=rtcp:9 IN IP4 0.0.0.0\r\n" "a=ice-ufrag:+JrN\r\n" "a=ice-pwd:TMWORlSHr9fd+0bUNXnlBs5D\r\n" - "a=fingerprint:sha-256 FD:56:1A:DB:3E:7B:8E:0B:75:4E:2E:49:1A:91:52:E4:69:9E:66:91:FF:34:A2:50:58:72:C0:8E:C2:87:CA:1F\r\n" + "a=fingerprint:sha-256 FD:56:1A:DB:3E:7B:8E:0B:75:4E:2E:49:1A:91:52:E4:69:9E:66:91:FF:34:A2:50:58:72:C0:8E:C2:87:CA:1F\r\n" # noqa: E501 "a=setup:actpass\r\n" "a=mid:1\r\n" - "a=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" + "a=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\n" # noqa: E501 + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 "a=extmap:13 urn:3gpp:video-orientation\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" - "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" - "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" - "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" - "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" - "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" - "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 + "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" # noqa: E501 + "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" # noqa: E501 + "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" # noqa: E501 + "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" # noqa: E501 + "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" # noqa: E501 + "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" # noqa: E501 + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 "a=sendonly\r\n" - "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 "a=rtcp-mux\r\n" "a=rtcp-rsize\r\n" "a=rtpmap:96 VP8/90000\r\n" @@ -1610,7 +1634,7 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:102 ccm fir\r\n" "a=rtcp-fb:102 nack\r\n" "a=rtcp-fb:102 nack pli\r\n" - "a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\n" + "a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\n" # noqa: E501 "a=rtpmap:121 rtx/90000\r\n" "a=fmtp:121 apt=102\r\n" "a=rtpmap:127 H264/90000\r\n" @@ -1619,7 +1643,7 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:127 ccm fir\r\n" "a=rtcp-fb:127 nack\r\n" "a=rtcp-fb:127 nack pli\r\n" - "a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\n" + "a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\n" # noqa: E501 "a=rtpmap:120 rtx/90000\r\n" "a=fmtp:120 apt=127\r\n" "a=rtpmap:125 H264/90000\r\n" @@ -1628,7 +1652,7 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:125 ccm fir\r\n" "a=rtcp-fb:125 nack\r\n" "a=rtcp-fb:125 nack pli\r\n" - "a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\n" + "a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\n" # noqa: E501 "a=rtpmap:107 rtx/90000\r\n" "a=fmtp:107 apt=125\r\n" "a=rtpmap:108 H264/90000\r\n" @@ -1637,7 +1661,7 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:108 ccm fir\r\n" "a=rtcp-fb:108 nack\r\n" "a=rtcp-fb:108 nack pli\r\n" - "a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\n" + "a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\n" # noqa: E501 "a=rtpmap:109 rtx/90000\r\n" "a=fmtp:109 apt=108\r\n" "a=rtpmap:35 AV1X/90000\r\n" @@ -1654,13 +1678,13 @@ class TestVideoroom(unittest.TestCase): "a=rtpmap:123 ulpfec/90000\r\n" "a=ssrc-group:FID 3005569364 2001490794\r\n" "a=ssrc:3005569364 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" - "a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:3005569364 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 + "a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:3005569364 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 "a=ssrc:2001490794 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:2001490794 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" - "a=ssrc:2001490794 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=ssrc:2001490794 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 + "a=ssrc:2001490794 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 ), }, "handle_id": pub_handle, @@ -1690,11 +1714,11 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:111 transport-cc\r\n" "a=extmap-allow-mixed\r\n" "a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 "a=recvonly\r\n" "a=rtcp:\\d+\r\n" "a=rtcp-mux\r\n" @@ -1704,7 +1728,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n" "m=video \\d+ UDP/TLS/RTP/SAVPF 96\r\n" "c=IN IP4 203.0.113.1\r\n" @@ -1717,16 +1741,16 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:96 nack pli\r\n" "a=extmap-allow-mixed\r\n" "a=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 "a=extmap:13 urn:3gpp:video-orientation\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" - "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" - "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" - "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" - "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 + "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" # noqa: E501 + "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" # noqa: E501 + "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" # noqa: E501 + "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" # noqa: E501 "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" - "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" + "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" # noqa: E501 + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 "a=recvonly\r\n" "a=rtcp:\\d+\r\n" "a=rtcp-mux\r\n" @@ -1736,7 +1760,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -1815,16 +1839,16 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:111 transport-cc\r\n" "a=extmap-allow-mixed\r\n" "a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" - "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 + "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 "a=ssrc:677770262 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:677770262 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" - "a=ssrc:677770262 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:677770262 label:2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" + "a=ssrc:677770262 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 + "a=ssrc:677770262 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:677770262 label:2de0f1b0-3a39-450e-9804-8305ec87452b\r\n" # noqa: E501 "a=sendonly\r\n" "a=rtcp-mux\r\n" "a=setup:actpass\r\n" @@ -1833,7 +1857,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n" "m=video \\d+ UDP/TLS/RTP/SAVPF 96\r\n" "c=IN IP4 203.0.113.1\r\n" @@ -1846,27 +1870,27 @@ class TestVideoroom(unittest.TestCase): "a=rtcp-fb:96 nack pli\r\n" "a=extmap-allow-mixed\r\n" "a=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\n" - "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" + "a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n" # noqa: E501 "a=extmap:13 urn:3gpp:video-orientation\r\n" - "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" - "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" - "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" - "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" - "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" + "a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\n" # noqa: E501 + "a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\n" # noqa: E501 + "a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\n" # noqa: E501 + "a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\n" # noqa: E501 + "a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\n" # noqa: E501 "a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\n" "a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\n" - "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" - "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\n" # noqa: E501 + "a=msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 "a=rtcp-rsize\r\n" "a=ssrc-group:FID 3005569364 2001490794\r\n" "a=ssrc:3005569364 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" - "a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:3005569364 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=ssrc:3005569364 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 + "a=ssrc:3005569364 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:3005569364 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 "a=ssrc:2001490794 cname:NMNDwVd66x2SfiO0\r\n" - "a=ssrc:2001490794 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" - "a=ssrc:2001490794 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" - "a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" + "a=ssrc:2001490794 msid:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC 6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 + "a=ssrc:2001490794 mslabel:hJifdaJwqEqHxSG0pVbs1DrLAwiHqz7fKlqC\r\n" # noqa: E501 + "a=ssrc:2001490794 label:6d6ec7a7-e3d7-4c82-b03c-45e017713abd\r\n" # noqa: E501 "a=sendonly\r\n" "a=rtcp-mux\r\n" "a=setup:actpass\r\n" @@ -1875,7 +1899,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -1902,12 +1926,14 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomICE(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle = self.createHandle(token, session) self.assertNotEqual(pub_handle, control_handle) - feed = self.createPublisher(token, session, room, pub_handle, feed_id=123) + feed = self.createPublisher( + token, session, room, pub_handle, feed_id=123 + ) self.assertNotEqual(feed, control_handle) eventloop.run_until_complete( @@ -1970,7 +1996,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -2013,7 +2039,9 @@ class TestVideoroom(unittest.TestCase): { "janus": "trickle", "candidate": { - "candidate": "candidate:3279615273 1 udp 2113937151 203.0.113.2 30000 typ host generation 0 ufrag 62lL network-cost 999", + "candidate": ( + "candidate:3279615273 1 udp 2113937151 203.0.113.2 30000 typ host generation 0 ufrag 62lL network-cost 999" # noqa: E501 + ), "sdpMid": "audio", }, "handle_id": pub_handle, @@ -2028,7 +2056,11 @@ class TestVideoroom(unittest.TestCase): self.assertRegex( m, re.compile( - b"^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine.*?\x00\x06\x00\x0d62lL:(........)\x00\x00\x00\x80\\\x29\x00\x08........\x00\\\x24\x00\x04\x6e\xff\xff\xff\x00\x08\x00\x14....................\x80\\\x28\x00\x04....$", + b"^\x00\x01\x00.\x21\x12\xa4\x42(............)" + b"\x80\x22\x00.rtpengine.*?\x00\x06\x00\x0d" + b"62lL:(........)\x00\x00\x00\x80\\\x29\x00\x08........\x00" + b"\\\x24\x00\x04\x6e\xff\xff\xff\x00\x08\x00" + b"\x14....................\x80\\\x28\x00\x04....$", re.DOTALL, ), ) @@ -2086,7 +2118,7 @@ class TestVideoroom(unittest.TestCase): "a=ice-ufrag:.{8}\r\n" "a=ice-pwd:.{26}\r\n" "a=ice-options:trickle\r\n" - "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" + "a=candidate:.{16} 1 UDP 2130706431 203.0.113.1 \\d+ typ host\r\n" # noqa: E501 "a=end-of-candidates\r\n$", re.DOTALL, ), @@ -2171,7 +2203,9 @@ class TestVideoroom(unittest.TestCase): { "janus": "trickle", "candidate": { - "candidate": "candidate:3fgsdfs273 1 udp 2113937151 203.0.113.2 30002 typ host generation 0", + "candidate": ( + "candidate:3fgsdfs273 1 udp 2113937151 203.0.113.2 30002 typ host generation 0" # noqa: E501 + ), "sdpMid": "1", "usernameFragment": "abcd", }, @@ -2187,7 +2221,11 @@ class TestVideoroom(unittest.TestCase): self.assertRegex( m, re.compile( - b"^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine.*?\x00\x06\x00\x0dabcd:(........)\x00\x00\x00\x80\\\x2a\x00\x08........\x00\\\x24\x00\x04\x6e\xff\xff\xff\x00\x08\x00\x14....................\x80\\\x28\x00\x04....$", + b"^\x00\x01\x00.\x21\x12\xa4\x42(............)" + b"\x80\x22\x00.rtpengine.*?\x00\x06\x00\x0d" + b"abcd:(........)\x00\x00\x00\x80\\\x2a\x00\x08........\x00" + b"\\\x24\x00\x04\x6e\xff\xff\xff\x00\x08\x00" + b"\x14....................\x80\\\x28\x00\x04....$", re.DOTALL, ), ) @@ -2199,7 +2237,9 @@ class TestVideoroom(unittest.TestCase): { "janus": "trickle", "candidate": { - "candidate": "candidate:6 2 TCP 2105393406 2607:fea8:ab00:33::9f4 9 typ host tcptype active", + "candidate": ( + "candidate:6 2 TCP 2105393406 2607:fea8:ab00:33::9f4 9 typ host tcptype active" # noqa: E501 + ), "sdpMid": "audio", "usernameFragment": "abcd", }, @@ -2217,7 +2257,7 @@ class TestVideoroom(unittest.TestCase): sub_sock.close() def testVideoroomPubSub(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() # XXX add tests for requests for invalid IDs/handles @@ -2622,17 +2662,24 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session) def testVideoroomMultiConn(self): - (token, session_1, control_handle, room) = self.startVideoroom() + token, session_1, control_handle, room = self.startVideoroom() # publisher #1 with its own connection and session - (token, session_2) = self.startSession(1) + token, session_2 = self.startSession(1) self.assertNotEqual(session_1, session_2) pub_handle_1 = self.createHandle(token, session_2, 1) self.assertNotEqual(pub_handle_1, control_handle) # create feed for publisher #1 - feed_1 = self.createPublisher(token, session_2, room, pub_handle_1, [], 1) + feed_1 = self.createPublisher( + token, + session_2, + room, + pub_handle_1, + [], + 1, + ) pub_sock_1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) pub_sock_1.settimeout(0.1) @@ -2726,7 +2773,7 @@ class TestVideoroom(unittest.TestCase): pub_sock_1.connect(("203.0.113.1", pub_port_1)) # publisher #2 with its own connection and session - (token, session_3) = self.startSession(2) + token, session_3 = self.startSession(2) self.assertNotEqual(session_1, session_3) self.assertNotEqual(session_2, session_3) @@ -2942,7 +2989,9 @@ class TestVideoroom(unittest.TestCase): # destroy session #2 self.destroySession(token, session_2) # success is received first - self.assertEqual(self._res, {"janus": "success", "session_id": session_2}) + self.assertEqual( + self._res, {"janus": "success", "session_id": session_2} + ) # followed by events in the other session eventloop.run_until_complete(testIJson(self, 2)) @@ -2990,7 +3039,7 @@ class TestVideoroom(unittest.TestCase): self.destroySession(token, session_3) def testVideoroomMute(self): - (token, session, control_handle, room) = self.startVideoroom() + token, session, control_handle, room = self.startVideoroom() pub_handle_1 = self.createHandle(token, session) self.assertNotEqual(pub_handle_1, control_handle) @@ -3115,14 +3164,19 @@ class TestVideoroom(unittest.TestCase): # send fake RTP to trigger event m = pub_sock_audio.send( - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ) # wait for webrtcup event eventloop.run_until_complete(testIJson(self)) self.assertEqual( self._res, - {"janus": "webrtcup", "session_id": session, "sender": pub_handle_1}, + { + "janus": "webrtcup", + "session_id": session, + "sender": pub_handle_1, + }, ) # wait for audio media @@ -3141,7 +3195,8 @@ class TestVideoroom(unittest.TestCase): # repeat for video m = pub_sock_video.send( - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ) eventloop.run_until_complete(testIJson(self)) @@ -3300,22 +3355,34 @@ class TestVideoroom(unittest.TestCase): # check forwarding m = pub_sock_audio.send( - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x60\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x10\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = pub_sock_video.send( - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = sub_sock_audio.recv(1000) self.assertEqual( m, - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x80\x60\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x10\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00", ) m = sub_sock_video.recv(1000) self.assertEqual( m, - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00", ) # mute audio @@ -3377,10 +3444,16 @@ class TestVideoroom(unittest.TestCase): # check forwarding m = pub_sock_audio.send( - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x60\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x10\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = pub_sock_video.send( - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = None @@ -3393,7 +3466,10 @@ class TestVideoroom(unittest.TestCase): m = sub_sock_video.recv(1000) self.assertEqual( m, - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00", ) # unmute audio @@ -3456,22 +3532,34 @@ class TestVideoroom(unittest.TestCase): # check forwarding m = pub_sock_audio.send( - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x60\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x10\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = pub_sock_video.send( - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" ) m = sub_sock_audio.recv(1000) self.assertEqual( m, - b"\x80\x60\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x80\x60\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x10\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00", ) m = sub_sock_video.recv(1000) self.assertEqual( m, - b"\x80\x61\x12\x34\x43\x32\x12\x45\x65\x45\x34\x23\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"\x80\x61\x12\x34\x43\x32\x12\x45" + b"\x65\x45\x34\x23\x00\x00\x20\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00\x00\x00", ) self.destroyVideoroom(token, session, control_handle, room) @@ -3525,7 +3613,7 @@ if __name__ == "__main__": else: code = e.code traceback.print_exc() - except: + except Exception: traceback.print_exc() if proc: @@ -3542,5 +3630,9 @@ if __name__ == "__main__": os.unlink(so.name) os.unlink(se.name) else: - print("HINT: Stdout and stderr are {} and {}".format(so.name, se.name)) + print( + "HINT: Stdout and stderr are {} and {}".format( + so.name, se.name + ) + ) sys.exit(code) diff --git a/tox.ini b/tox.ini new file mode 100644 index 000000000..fa95328dd --- /dev/null +++ b/tox.ini @@ -0,0 +1,2 @@ +[pycodestyle] +max-line-length = 79 diff --git a/utils/ng-load-tester.py b/utils/ng-load-tester.py index d661646f2..99f8a3307 100644 --- a/utils/ng-load-tester.py +++ b/utils/ng-load-tester.py @@ -44,7 +44,8 @@ if cmd == "offer": "command": "offer", "from-tag": "bar", "to-tag": "meh", - "sdp": """ + "sdp": ( + """ v=0 o=- 1695296331 1695296331 IN IP4 192.168.1.202 s=- @@ -55,7 +56,8 @@ if cmd == "offer": a=rtpmap:8 PCMA/8000/1 a=rtpmap:101 telephone-event/8000 a=sendrecv - """, + """ + ), "replace": ["origin"], } elif cmd == "answer": @@ -64,7 +66,8 @@ elif cmd == "answer": "call-id": "foo", "from-tag": "bar", "to-tag": "meh", - "sdp": """ + "sdp": ( + """ v=0 o=- 1695296331 1695296331 IN IP4 192.168.1.202 s=- @@ -79,7 +82,8 @@ elif cmd == "answer": a=rtcp-mux a=rtcprsize a=sendrecv - """, + """ # noqa: E261 + ), "flags": ["generate RTCP", "pad crypto", "symmetric codecs"], "ICE": "remove", "codec": {