)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1eb77691010c4c84b894fa109fdc9640305afb90","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[FT] Reduce arping interval in ``test_send_ipv4_addr_adv_notif``"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #2095044"},{"line_number":10,"context_line":"Change-Id: I990368d7b76cc5fcb29e5ef325d19c1b1fc53ccd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"4d2df193_be09be84","line":9,"updated":"2025-01-16 14:25:30.000000000","message":"it seems like it\u0027s related but not necessarily closes? the final fix would be to make the test not make assumptions it shouldn\u0027t do (any_order\u003dTrue).","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f1f748f9b62f5c1ff05663e812d5a613729052e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[FT] Reduce arping interval in ``test_send_ipv4_addr_adv_notif``"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-Bug: #2095044"},{"line_number":10,"context_line":"Change-Id: I990368d7b76cc5fcb29e5ef325d19c1b1fc53ccd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a9ccb48_ec5e1d14","line":9,"in_reply_to":"4d2df193_be09be84","updated":"2025-01-17 09:25:39.000000000","message":"Not really. We can enforce this specific order. As I commented in the LP bug, we can just reduce the arping interval thus the commands will be executed fast enough that nothing else will be executed in the middle. This is the first alternative I proposed in c#4.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1eb77691010c4c84b894fa109fdc9640305afb90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e0e0eb94_34ce11a9","updated":"2025-01-16 14:25:30.000000000","message":"I think the fix is fine, but another fix is also needed, and maybe this patch here should not close the bug.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"38f270e492e01b2a001a5b8529b8356352943094","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c1f17658_72451664","updated":"2025-01-17 13:59:52.000000000","message":"Let\u0027s get this in. The other fix refactoring the test case is needed to make it less brittle (not to assume order etc.) but let\u0027s unblock.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f1f748f9b62f5c1ff05663e812d5a613729052e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7cddbfeb_56773ec8","updated":"2025-01-17 09:25:39.000000000","message":"recheck neutron-tempest-plugin-ovn-ubuntu-jammy","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"}],"neutron/tests/unit/agent/linux/test_ip_lib.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"7b5f1332740310c3112aac64d4ec55d346b52e00","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"    @mock.patch.object(ip_lib, \u0027ARPING_SLEEP\u0027, 0)"},{"line_number":1082,"context_line":"    @mock.patch.object(ip_lib, \u0027IPWrapper\u0027)"},{"line_number":1083,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1084,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper, *args):"},{"line_number":1085,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1086,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1087,"context_line":"        address \u003d \u002720.0.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1515455b_f5cb40bb","line":1084,"updated":"2025-01-16 12:29:56.000000000","message":"you could avec asserted mock_arping so we are sure that the value got updated and take into account.","commit_id":"69cf68600bb1312abc29de071488d1b1f0cdcff4"},{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"4714be9913fbfccf5842071903c364cf83b7febf","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"    @mock.patch.object(ip_lib, \u0027ARPING_SLEEP\u0027, 0)"},{"line_number":1082,"context_line":"    @mock.patch.object(ip_lib, \u0027IPWrapper\u0027)"},{"line_number":1083,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1084,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper, *args):"},{"line_number":1085,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1086,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1087,"context_line":"        address \u003d \u002720.0.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0f6306a_251751ca","line":1084,"in_reply_to":"1515455b_f5cb40bb","updated":"2025-01-16 13:32:24.000000000","message":"+1","commit_id":"69cf68600bb1312abc29de071488d1b1f0cdcff4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"816fd6c6d1a51ea58fe77c4d148e822ed0860005","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"    @mock.patch.object(ip_lib, \u0027ARPING_SLEEP\u0027, 0)"},{"line_number":1082,"context_line":"    @mock.patch.object(ip_lib, \u0027IPWrapper\u0027)"},{"line_number":1083,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1084,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper, *args):"},{"line_number":1085,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1086,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1087,"context_line":"        address \u003d \u002720.0.0.1\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"61f04333_1f488763","line":1084,"in_reply_to":"f0f6306a_251751ca","updated":"2025-01-16 13:40:15.000000000","message":"This is not a method (actually the *args is not needed). This is modifying a variable, not mocking a method. This patch doesn\u0027t return anything.\n\nI\u0027ll remove *args","commit_id":"69cf68600bb1312abc29de071488d1b1f0cdcff4"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1eb77691010c4c84b894fa109fdc9640305afb90","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"                                      ARPING_COUNT)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ec9253e1_19012e6d","line":1094,"updated":"2025-01-16 14:25:30.000000000","message":"as you alluded in the bug report comments, the real issue is that the check makes too many assumptions about the fact that no other commands are executed in the meantime. This should be any_order\u003dTrue.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8f1f748f9b62f5c1ff05663e812d5a613729052e","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"                                      ARPING_COUNT)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"f4007b5c_1cd8b767","line":1094,"in_reply_to":"8eddf97a_f4a9604b","updated":"2025-01-17 09:25:39.000000000","message":"The refactor of this method can be done after this fix. As commented in the LP bug, there are two possible solutions: reduce the arping interval or void the order check. By reducing the arping interval we avoid any other command to be executed in the middle and we can guarantee in the check both the commands and the order.\n\nWhat is commented in c#5 is just an alternative solution, but the one implemented here is preferable as long as we check both the commands and the execution order.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5699d112e64a180b2b73bcd7fd9d84700290ddcf","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"                                      ARPING_COUNT)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"8eddf97a_f4a9604b","line":1094,"in_reply_to":"d2d4c365_5edc35da","updated":"2025-01-16 15:46:16.000000000","message":"I don\u0027t think so. I think what we care about here is that\n\n- ARP REQUEST was sent once with logging on ip address missing (\u003d[1])\n- ARP REPLY was sent once with logging on ip address missing (\u003d[1])\n- That there were two more of each with execute() logging suppressed for address missing (\u003d[1,2])\n\nWe do NOT care about the order of these calls.\n\n(Side note: I suspect a lot of kludges in _arping are long obsolete; e.g. kernel was patched to handle single arping call back in 2017, so we could probably revert the patch that split the calls into separate executions. This would simplify this test case too.)","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c6e4278626cc4271519baea4e888460c60de4445","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"                                      ARPING_COUNT)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2d4c365_5edc35da","line":1094,"in_reply_to":"ec9253e1_19012e6d","updated":"2025-01-16 15:25:28.000000000","message":"These calls should be in this order though.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"38f270e492e01b2a001a5b8529b8356352943094","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"                                      ARPING_COUNT)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"b0795569_89fd4f49","line":1094,"in_reply_to":"f4007b5c_1cd8b767","updated":"2025-01-17 13:59:52.000000000","message":"\u003e we can guarantee\n\nPedant point but: I am not sure you can *guarantee* this with a reduced sleep, only hope that the test doesn\u0027t take long enough. This may be a moot point because we probably don\u0027t expect it to take that long on any reasonable hardware, but guarantee is a strong word.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1eb77691010c4c84b894fa109fdc9640305afb90","unresolved":true,"context_lines":[{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"},{"line_number":1098,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1099,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"f7b91587_205a66f9","line":1096,"updated":"2025-01-16 14:25:30.000000000","message":"(No action required) this test should probably check that these are indeed arpings with expected command line.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5699d112e64a180b2b73bcd7fd9d84700290ddcf","unresolved":false,"context_lines":[{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"},{"line_number":1098,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1099,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"c206d8fe_b7dc8818","line":1096,"in_reply_to":"8a25b3d8_532648bc","updated":"2025-01-16 15:46:16.000000000","message":"Ah right.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c6e4278626cc4271519baea4e888460c60de4445","unresolved":true,"context_lines":[{"line_number":1093,"context_line":"        self.assertTrue(spawn_n.called)"},{"line_number":1094,"context_line":"        mIPWrapper.assert_has_calls(["},{"line_number":1095,"context_line":"            mock.call(namespace\u003dmock.sentinel.ns_name),"},{"line_number":1096,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1097,"context_line":"                                      privsep_exec\u003dTrue),"},{"line_number":1098,"context_line":"            mock.call().netns.execute(mock.ANY, extra_ok_codes\u003d[1],"},{"line_number":1099,"context_line":"                                      privsep_exec\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a25b3d8_532648bc","line":1096,"in_reply_to":"f7b91587_205a66f9","updated":"2025-01-16 15:25:28.000000000","message":"That\u0027s what below does, right? I don\u0027t remember why we didn\u0027t combine them in one check.","commit_id":"d5404549bb8d27a6725470bb79a070d5595cf3cd"}]}
