)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"2069b2f2f00cbad2e5868d3fb7e7777d0d790877","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f09de40b_84e7dad0","updated":"2021-12-21 08:15:44.000000000","message":"CR-1 because of one question","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"b6167467d2fa60363b01e4ab53370769114961c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ac2a0261_1cbaa963","updated":"2021-12-21 12:46:35.000000000","message":"I\u0027m about to upload a new patchset to improve some something nit (minor).","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"b54048ad9c8d9aa76cf246958540646e54c4cc9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0e27ac3b_c03073e4","updated":"2021-10-13 10:12:16.000000000","message":"recheck","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"203fa3c20f03b679b46e1efecf29592071850fbf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0f8cea08_656db2b1","updated":"2021-12-08 11:10:38.000000000","message":"recheck","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"e8b0307f29e09c0552d319ee1291fe524dfe95cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1b67d522_111bf1b8","updated":"2021-12-08 13:47:20.000000000","message":"recheck","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d848d33892272b456a29967ec918bef2a1571ad2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c299d514_2601a30b","updated":"2022-02-23 22:10:49.000000000","message":"I think we need to re-think this one and consider simplifying and reducing the test runtime and load.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"313ce676dd563539a5e810b8554bfda2acbc82c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"25ef2a94_402756c2","updated":"2022-02-23 22:15:50.000000000","message":"To give additional context to why I am raising the concern about test runtime:\nhttps://zuul.openstack.org/builds?job_name\u003doctavia-v2-dsvm-scenario-fips\u0026pipeline\u003dperiodic\u0026skip\u003d0\n\nWe already have test runtime issues with CentOS 8","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"64adec36bcb39fc17cf0fdae3eb0ae480c63835e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e1377527_e04102c6","updated":"2021-12-21 20:35:34.000000000","message":"recheck","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a7756f548b1946e007b00dcf4ffbbb7f11831b04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ff678ee0_0a5894b2","updated":"2022-01-06 21:04:57.000000000","message":"recheck","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"11c5c31af77136f9fa219730ccbcb4c3da99b64c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3f7c4eb8_915d572c","in_reply_to":"25ef2a94_402756c2","updated":"2022-02-24 21:56:23.000000000","message":"The point is clear and in fact test\u0027s traffic itself is supposed to take ~1 sec, the rest of time is spent on LB configuration.\nI\u0027ll add \"@decorators.attr(type\u003d\u0027slow\u0027)\" to this test.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ef13c020c640e8fd53d040a6ca8639613efd2363","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1550c5c3_a9b980ca","updated":"2022-02-27 08:37:07.000000000","message":"recheck","commit_id":"bf6ed494093a0d50498eecd9b58812002b022856"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"41ded98b329de107f49fbd6d109745c7086b144e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"737987d7_33ad0ef1","updated":"2022-04-26 07:19:43.000000000","message":"recheck","commit_id":"bf6ed494093a0d50498eecd9b58812002b022856"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"dfc1ac28d0e95f80714c7bfbecfd62d81e570b1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d631797e_5f7e86a5","updated":"2023-11-28 10:11:55.000000000","message":"recheck","commit_id":"7d2e4cdd0f9838a80d68819c1fb1e9088118d129"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"942666939bf72b43b2341c8512337cd41f1397fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fcec8515_7486dd6c","updated":"2024-03-05 08:28:33.000000000","message":"recheck\nEnsure that the code is still valid and works","commit_id":"7d2e4cdd0f9838a80d68819c1fb1e9088118d129"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"735bc3c96f2807bd92cbf196c2df94bc06f46a00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e08f2a66_01aa0a0c","updated":"2025-12-12 19:07:38.000000000","message":"I don\u0027t think this is testing what you think it is...","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"ef10899c029ebcf641edc816da7474054f8566be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f09ee114_a22bfe2f","updated":"2025-12-12 12:13:57.000000000","message":"Ran the new test in Devstack, everything seems to check out. I think there\u0027s scope for some improvement by using AsyncIO instead of Threads but this is only a suggestion, not a blocker","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"72efe97b67ae594ba74b7d01f511d01577f242c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d64b9beb_69280470","updated":"2025-10-16 08:24:53.000000000","message":"recheck","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ed8df0050fe4b65be783d73565a579975c0050c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b293c401_bc4c5b46","updated":"2025-10-16 11:49:17.000000000","message":"recheck\nThe failure is not related to the code changes in this patch.","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c2983f060065fc9e0f12b0831ce3a0e41a8e4470","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f0fe11dd_0bd56399","updated":"2025-12-10 14:59:11.000000000","message":"recheck getting new logs to evaluate the impact of the tests on the duration of the jobs","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"3bc268562f543ce4ef37250f8707840af4b85806","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"63e76dfa_2f4c0a4f","updated":"2025-12-11 09:29:57.000000000","message":"{1} octavia_tempest_plugin.tests.scenario.v2.test_traffic_ops.TrafficOperationsScenarioTest.test_connection_limit [78.840769s] ... ok\n\nthe duration of the tests looks good","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"3c88ff9a1db09df86e1f941557dea4979fcaf71b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2585d3eb_9f76aeca","updated":"2026-01-12 16:32:53.000000000","message":"I tested in devstack and also induced a failure scenario by hardcoding a higher connection limit in the listener. The test failed as expected ensuring it should catch issues with the connection limit code","commit_id":"acada97ee6034f9d93858fce38d479dad7db38c8"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"b27f042aae2ff1ba517a4f3b2a347deb17f8ab3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"67f01070_e86aae83","updated":"2026-01-13 08:50:33.000000000","message":"Tested the updated code including forcing a test failure, looks good overall","commit_id":"acada97ee6034f9d93858fce38d479dad7db38c8"}],"octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"2069b2f2f00cbad2e5868d3fb7e7777d0d790877","unresolved":true,"context_lines":[{"line_number":1428,"context_line":"        listener_kwargs \u003d {"},{"line_number":1429,"context_line":"            const.LISTENER_ID: listener_id,"},{"line_number":1430,"context_line":"            const.CONNECTION_LIMIT: connection_limit}"},{"line_number":1431,"context_line":"        self.mem_listener_client.update_listener(**listener_kwargs)"},{"line_number":1432,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1433,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1434,"context_line":"                                const.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":3,"id":"e25f6192_b6c27f89","line":1431,"range":{"start_line":1431,"start_character":33,"end_line":1431,"end_character":48},"updated":"2021-12-21 08:15:44.000000000","message":"LGTM the test would be skipped if the provider doesn\u0027t support connection_limit","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"2069b2f2f00cbad2e5868d3fb7e7777d0d790877","unresolved":true,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"6ccd99cb_fb30ec0f","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"updated":"2021-12-21 08:15:44.000000000","message":"question: did you try a non-threaded approach (I would like to avoid such complexity in the code)? we could create \u003cn\u003e sessions, then perform sequentially requests on each session, the behavior would be the same.","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"a4467d9bf1ba1c5ef616075c6113ce42b1d92c7b","unresolved":true,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ebf0b688_c26ac563","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"in_reply_to":"11db960b_a40ee9ba","updated":"2022-01-26 13:39:54.000000000","message":"Hi Tom!\n\nThat was fast, thanks for review :-)\n\nIn term of this particular test patch I don\u0027t see any special reason for replacing the \"Thread\" with \"concurrent.futures\".\n\n\nThanks!","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"11c5c31af77136f9fa219730ccbcb4c3da99b64c","unresolved":false,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"f3b773ec_0134d8f7","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"in_reply_to":"57fb6c8b_3a3ff101","updated":"2022-02-24 21:56:23.000000000","message":"Done","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"b6167467d2fa60363b01e4ab53370769114961c1","unresolved":true,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"e9492d95_b7d8a48f","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"in_reply_to":"6ccd99cb_fb30ec0f","updated":"2021-12-21 12:46:35.000000000","message":"That\u0027s right, the result would be the same from the Octavia point of view, means that at least X/2 of the total X concurrent TCP connections are expected to be dropped.\n\nThe major challenge of this test, is that we need to get the exact feedback from each one of the concurrently initiated TCP connections, to consider if the particular TCP connection succeed or not and this is why I\u0027ve chosen Threading module. \nHere is an example list representing 10 threads results and that is used for test\u0027s assertion: http://pastebin.test.redhat.com/1017144\n\nThe test is stable (I\u0027ve ran it for ~10 times), Threading is a built in Python module and I\u0027m not sure that non-threaded way will avoid code complexity.","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"d188ed7c70dee59ea42708e3004fe729eb1128c8","unresolved":true,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"11db960b_a40ee9ba","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"in_reply_to":"e9492d95_b7d8a48f","updated":"2022-01-26 10:50:32.000000000","message":"Did you consider using the concurrent.futures module instead? It makes managing threads a bit less error prone IMO.","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d848d33892272b456a29967ec918bef2a1571ad2","unresolved":true,"context_lines":[{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1445,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1446,"context_line":"        for i in range(len(threads)):"},{"line_number":1447,"context_line":"            threads[i] \u003d Thread("},{"line_number":1448,"context_line":"                target\u003dself._http_requests_single_connection,"},{"line_number":1449,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1450,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"57fb6c8b_3a3ff101","line":1447,"range":{"start_line":1447,"start_character":25,"end_line":1447,"end_character":31},"in_reply_to":"ebf0b688_c26ac563","updated":"2022-02-23 22:10:49.000000000","message":"I don\u0027t mind the threads, but Greg is right, this could be significantly simplified to just open multiple sessions.","commit_id":"2327b21798c192b16f48b212ce68ef38ebca915f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d848d33892272b456a29967ec918bef2a1571ad2","unresolved":true,"context_lines":[{"line_number":1438,"context_line":"        # Start the traffic, using parallel TCP connections."},{"line_number":1439,"context_line":"        # The number of TCP connection is \"doubled\" than the amount of"},{"line_number":1440,"context_line":"        # configured connection limit set."},{"line_number":1441,"context_line":"        connections_number \u003d connection_limit * 2"},{"line_number":1442,"context_line":"        http_gets_per_connection \u003d 10"},{"line_number":1443,"context_line":"        delay_between_http_gets \u003d 0.1"},{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"}],"source_content_type":"text/x-python","patch_set":5,"id":"6af4849e_5055cd21","line":1441,"updated":"2022-02-23 22:10:49.000000000","message":"If you just need to test if one or two more will fail, why launch all of these extra threads? It wastes RAM and CPU cycles that could be used for other tests.\nThis is launching 10 threads, all making requests multiple times (a total of 100 requests!).\nI think we need to scale this back and consider the impact this test would have on test runtime and resource usage.\nThis test could use just a connection limit of 1 and then two connections to validate the limit is functioning.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"11c5c31af77136f9fa219730ccbcb4c3da99b64c","unresolved":true,"context_lines":[{"line_number":1438,"context_line":"        # Start the traffic, using parallel TCP connections."},{"line_number":1439,"context_line":"        # The number of TCP connection is \"doubled\" than the amount of"},{"line_number":1440,"context_line":"        # configured connection limit set."},{"line_number":1441,"context_line":"        connections_number \u003d connection_limit * 2"},{"line_number":1442,"context_line":"        http_gets_per_connection \u003d 10"},{"line_number":1443,"context_line":"        delay_between_http_gets \u003d 0.1"},{"line_number":1444,"context_line":"        threads \u003d [None] * connections_number"}],"source_content_type":"text/x-python","patch_set":5,"id":"375b9e69_b2bd7e93","line":1441,"in_reply_to":"6af4849e_5055cd21","updated":"2022-02-24 21:56:23.000000000","message":"OK, in order to reduce CPU and RAM usage I can set the connection_limit\u003d1 and threads\u003d2.\nI\u0027m a bit skeptic about setting the connection_limit\u003d1, what about the concurrent traffic tests?\nTheoretically some of them may fail because of dropped connections.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"735bc3c96f2807bd92cbf196c2df94bc06f46a00","unresolved":true,"context_lines":[{"line_number":1802,"context_line":""},{"line_number":1803,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":1804,"context_line":"    @decorators.idempotent_id(\u002745f5f018-1073-11eb-be7b-74e5f9e2a801\u0027)"},{"line_number":1805,"context_line":"    def test_connection_limit(self):"},{"line_number":1806,"context_line":"        \"\"\"Test scenario:"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"        * Create LB, HTTP listener, pool, 2 members and validate traffic."}],"source_content_type":"text/x-python","patch_set":8,"id":"c5b5f189_fe9afb81","line":1805,"updated":"2025-12-12 19:07:38.000000000","message":"I struggle with this test. The connection limit causes the LB to queue connections over this limit, thus reducing CPU load. It will not reject connections over this limit. It seems like this test is passing on the luck that a connection is queued for more than a second based on the tcp_timeout passed to requests or is seeing some other side effect.","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"d654769704388c7573fab0bd027d454b08d8724b","unresolved":true,"context_lines":[{"line_number":1802,"context_line":""},{"line_number":1803,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":1804,"context_line":"    @decorators.idempotent_id(\u002745f5f018-1073-11eb-be7b-74e5f9e2a801\u0027)"},{"line_number":1805,"context_line":"    def test_connection_limit(self):"},{"line_number":1806,"context_line":"        \"\"\"Test scenario:"},{"line_number":1807,"context_line":""},{"line_number":1808,"context_line":"        * Create LB, HTTP listener, pool, 2 members and validate traffic."}],"source_content_type":"text/x-python","patch_set":8,"id":"24b0dc24_7a84a6d7","line":1805,"in_reply_to":"c5b5f189_fe9afb81","updated":"2025-12-24 15:34:17.000000000","message":"Hi Micheal!\nYep, that\u0027s right good catch, thanks!","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"ef10899c029ebcf641edc816da7474054f8566be","unresolved":true,"context_lines":[{"line_number":1840,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1841,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1842,"context_line":"        for i in range(len(threads)):"},{"line_number":1843,"context_line":"            threads[i] \u003d Thread("},{"line_number":1844,"context_line":"                target\u003dself.http_requests_single_connection,"},{"line_number":1845,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1846,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":8,"id":"70c21b28_3a0acc12","line":1843,"updated":"2025-12-12 12:13:57.000000000","message":"I tend to bang the AsyncIO drum a lot more than I should, but this is definitely one area where I\u0027d consider it to be better than threads. You can have the requests as tasks and just await them all to complete instead of having to join threads\n\nI had some code previously where I was doing something similar, basically firing off several parallel HTTP requests using AsyncIO and checking how many passed or failed. I\u0027ll try to dig it up as an example\n\nTo be clear, for 2 parallel requests it isn\u0027t likely to make much difference, but for 100 or more then it may be the better approach","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"b27f042aae2ff1ba517a4f3b2a347deb17f8ab3c","unresolved":false,"context_lines":[{"line_number":1840,"context_line":"        threads \u003d [None] * connections_number"},{"line_number":1841,"context_line":"        traffic_result_limited \u003d [None] * connections_number"},{"line_number":1842,"context_line":"        for i in range(len(threads)):"},{"line_number":1843,"context_line":"            threads[i] \u003d Thread("},{"line_number":1844,"context_line":"                target\u003dself.http_requests_single_connection,"},{"line_number":1845,"context_line":"                args\u003d(self.lb_vip_address, listener_port,"},{"line_number":1846,"context_line":"                      http_gets_per_connection, delay_between_http_gets,"}],"source_content_type":"text/x-python","patch_set":8,"id":"a27fa448_e6521d60","line":1843,"in_reply_to":"70c21b28_3a0acc12","updated":"2026-01-13 08:50:33.000000000","message":"New code looks good","commit_id":"cf90ad843fbe849866e0a8abf18cbcced9c834d4"}],"octavia_tempest_plugin/tests/validators.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d848d33892272b456a29967ec918bef2a1571ad2","unresolved":true,"context_lines":[{"line_number":423,"context_line":"        raise Exception(message)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @staticmethod"},{"line_number":426,"context_line":"    def _http_requests_single_connection("},{"line_number":427,"context_line":"            dst_ip, dst_port, request_number,"},{"line_number":428,"context_line":"            delay, result, index, tcp_timeout\u003d1):"},{"line_number":429,"context_line":"        \"\"\"This function is used as a thread target function."}],"source_content_type":"text/x-python","patch_set":5,"id":"a8070fb9_762d0133","line":426,"updated":"2022-02-23 22:10:49.000000000","message":"This is marked as file private with the \"_\" prefix, but it\u0027s called from the traffic ops suite. Let\u0027s make this consistent with the other validation methods here.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"11c5c31af77136f9fa219730ccbcb4c3da99b64c","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        raise Exception(message)"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @staticmethod"},{"line_number":426,"context_line":"    def _http_requests_single_connection("},{"line_number":427,"context_line":"            dst_ip, dst_port, request_number,"},{"line_number":428,"context_line":"            delay, result, index, tcp_timeout\u003d1):"},{"line_number":429,"context_line":"        \"\"\"This function is used as a thread target function."}],"source_content_type":"text/x-python","patch_set":5,"id":"59d05da2_942bfa86","line":426,"in_reply_to":"a8070fb9_762d0133","updated":"2022-02-24 21:56:23.000000000","message":"Done","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d848d33892272b456a29967ec918bef2a1571ad2","unresolved":true,"context_lines":[{"line_number":449,"context_line":"            s \u003d requests.Session()"},{"line_number":450,"context_line":"            responses \u003d []"},{"line_number":451,"context_line":"            for req in range(request_number):"},{"line_number":452,"context_line":"                r \u003d s.get(\u0027http://{}:{}\u0027.format("},{"line_number":453,"context_line":"                    dst_ip, dst_port), timeout\u003dtcp_timeout)"},{"line_number":454,"context_line":"                responses.append({"},{"line_number":455,"context_line":"                    \u0027RequestNumber\u0027: req, \u0027ResponseCode\u0027: r.status_code,"}],"source_content_type":"text/x-python","patch_set":5,"id":"269b24a5_278c6fd1","line":452,"updated":"2022-02-23 22:10:49.000000000","message":"Is there anyway we can use the validate_URL_response method above instead of adding another connection method?","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"11c5c31af77136f9fa219730ccbcb4c3da99b64c","unresolved":true,"context_lines":[{"line_number":449,"context_line":"            s \u003d requests.Session()"},{"line_number":450,"context_line":"            responses \u003d []"},{"line_number":451,"context_line":"            for req in range(request_number):"},{"line_number":452,"context_line":"                r \u003d s.get(\u0027http://{}:{}\u0027.format("},{"line_number":453,"context_line":"                    dst_ip, dst_port), timeout\u003dtcp_timeout)"},{"line_number":454,"context_line":"                responses.append({"},{"line_number":455,"context_line":"                    \u0027RequestNumber\u0027: req, \u0027ResponseCode\u0027: r.status_code,"}],"source_content_type":"text/x-python","patch_set":5,"id":"97372b5c_43e62966","line":452,"in_reply_to":"269b24a5_278c6fd1","updated":"2022-02-24 21:56:23.000000000","message":"OK, technically it\u0027s doable, but by using \"validate_URL_response\" I\u0027ll have to set the only expected code to \"200\" and for the purpose of this specific test (connection limit) any received status code would be fine.\n\nI don\u0027t think that raising \"InvalidHttpSuccessCode\" error on any other code different than \"200 OK\" and failing the \"test_connection_limit\" because of that, is the a correct logic for this particular connection limit test.","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"9e6e637bace3e007e2ec865a0dcdcf57b02321c9","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            s \u003d requests.Session()"},{"line_number":450,"context_line":"            responses \u003d []"},{"line_number":451,"context_line":"            for req in range(request_number):"},{"line_number":452,"context_line":"                r \u003d s.get(\u0027http://{}:{}\u0027.format("},{"line_number":453,"context_line":"                    dst_ip, dst_port), timeout\u003dtcp_timeout)"},{"line_number":454,"context_line":"                responses.append({"},{"line_number":455,"context_line":"                    \u0027RequestNumber\u0027: req, \u0027ResponseCode\u0027: r.status_code,"}],"source_content_type":"text/x-python","patch_set":5,"id":"54156f5b_5125f1e4","line":452,"in_reply_to":"97372b5c_43e62966","updated":"2022-02-24 21:57:09.000000000","message":"Done","commit_id":"361d863c353a4f228eb23e2ef9177a425a9f0676"}]}
