)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d19251b45014462ab54dda51c047093c36a0f771","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bfd3141c_f38644b3","updated":"2023-04-18 15:54:02.000000000","message":"Please address Jakub\u0027s comments","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"72136359811cc884d68adcc5c3f1b9cd23ee05db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ebdbf7b2_2cbcd342","updated":"2023-04-18 09:49:34.000000000","message":"Thanks Terry!","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"628d15c6bb83bda3a80b57db07e782153e40cf02","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ad4a7691_5f113456","updated":"2023-04-19 06:08:23.000000000","message":"LGTM","commit_id":"d1afa56c2d5fc794e9b6304c664c98d7fb97f531"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b9bf6255a5144c2c802c8bddc4a3322827bf219c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c471fb0a_29a547fb","updated":"2023-04-19 14:53:47.000000000","message":"Thanks! :)","commit_id":"d1afa56c2d5fc794e9b6304c664c98d7fb97f531"}],"ovsdbapp/backend/ovs_idl/idlutils.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e589d85701344afd175e367b3822568a7804f71d","unresolved":true,"context_lines":[{"line_number":251,"context_line":"            ovs_poller.timer_wait(timeout * 1000)"},{"line_number":252,"context_line":"        ovs_poller.block()"},{"line_number":253,"context_line":"        if stop and time.time() \u003e\u003d stop:"},{"line_number":254,"context_line":"            raise exceptions.TimeoutException()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def get_column_value(row, col):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5fc57c1_96c95970","line":254,"range":{"start_line":254,"start_character":29,"end_line":254,"end_character":45},"updated":"2023-02-14 08:56:28.000000000","message":"I don\u0027t see any place where we are catching this exception. Is it safe to change it? Just asking.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5d462c60dbb566b1ea9ef4d5d5c6cc38955de231","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            ovs_poller.timer_wait(timeout * 1000)"},{"line_number":252,"context_line":"        ovs_poller.block()"},{"line_number":253,"context_line":"        if stop and time.time() \u003e\u003d stop:"},{"line_number":254,"context_line":"            raise exceptions.TimeoutException()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def get_column_value(row, col):"}],"source_content_type":"text/x-python","patch_set":2,"id":"b1bca58e_a4269f7b","line":254,"range":{"start_line":254,"start_character":29,"end_line":254,"end_character":45},"in_reply_to":"502f17ca_dc1ebed5","updated":"2023-04-18 15:42:01.000000000","message":"Thanks","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b82b3a3b9b9904447306b4d7045645f1850addc0","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            ovs_poller.timer_wait(timeout * 1000)"},{"line_number":252,"context_line":"        ovs_poller.block()"},{"line_number":253,"context_line":"        if stop and time.time() \u003e\u003d stop:"},{"line_number":254,"context_line":"            raise exceptions.TimeoutException()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def get_column_value(row, col):"}],"source_content_type":"text/x-python","patch_set":2,"id":"502f17ca_dc1ebed5","line":254,"range":{"start_line":254,"start_character":29,"end_line":254,"end_character":45},"in_reply_to":"d5fc57c1_96c95970","updated":"2023-04-14 15:28:41.000000000","message":"It should be since anything that catches a bare Exception will catch this and we don\u0027t catch TimeoutExceptions anywhere like you siad.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"}],"ovsdbapp/tests/unit/backend/ovs_idl/test_idlutils.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"61152f292145f1fdf90aea7826698488ce6395c7","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _make_idl_mock(self, cond):"},{"line_number":193,"context_line":"        idl \u003d mock.MagicMock()"},{"line_number":194,"context_line":"        idl.change_seqno \u003d random.randint(1, 100)"},{"line_number":195,"context_line":"        idl.run.return_value \u003d cond.run"},{"line_number":196,"context_line":"        idl.wait.side_effect \u003d [None, None, StopIteration]"},{"line_number":197,"context_line":"        return idl"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2f662e5_9ac97d14","line":194,"updated":"2023-04-18 15:42:28.000000000","message":"I do strongly suggest not to use randomness in unittests. Ever. The unittest should work always the same and produce always the same results regardless of where and when it\u0027s run.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"3b9f75b37d9f0b0f4e6646b3f28104a0e5e27cba","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _make_idl_mock(self, cond):"},{"line_number":193,"context_line":"        idl \u003d mock.MagicMock()"},{"line_number":194,"context_line":"        idl.change_seqno \u003d random.randint(1, 100)"},{"line_number":195,"context_line":"        idl.run.return_value \u003d cond.run"},{"line_number":196,"context_line":"        idl.wait.side_effect \u003d [None, None, StopIteration]"},{"line_number":197,"context_line":"        return idl"}],"source_content_type":"text/x-python","patch_set":2,"id":"d397eac6_20216fb5","line":194,"in_reply_to":"d2f662e5_9ac97d14","updated":"2023-04-18 21:28:26.000000000","message":"I can see the merit of this argument, though I would soften it to: randomness, if used, should be repeatable randomness.\n\nIt is useful to be able to test a range of values without necessarily making a new test for it (fuzz testing exists for a reason). But someone should be able to run the test as you ran it to reproduce the error when the test fails as well (and this doesn\u0027t do that, so I\u0027ll remove it).","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1e78d5cf97c1ff4c260507cb734353d1461b9d7f","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def _make_idl_mock(self, cond):"},{"line_number":193,"context_line":"        idl \u003d mock.MagicMock()"},{"line_number":194,"context_line":"        idl.change_seqno \u003d random.randint(1, 100)"},{"line_number":195,"context_line":"        idl.run.return_value \u003d cond.run"},{"line_number":196,"context_line":"        idl.wait.side_effect \u003d [None, None, StopIteration]"},{"line_number":197,"context_line":"        return idl"}],"source_content_type":"text/x-python","patch_set":2,"id":"4c672912_be8b794c","line":194,"in_reply_to":"d397eac6_20216fb5","updated":"2023-04-18 21:30:18.000000000","message":"Done","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"61152f292145f1fdf90aea7826698488ce6395c7","unresolved":true,"context_lines":[{"line_number":239,"context_line":"        )"},{"line_number":240,"context_line":"        for c, r in expected:"},{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0a41d4cb_7efb9c45","line":242,"range":{"start_line":242,"start_character":18,"end_line":242,"end_character":29},"updated":"2023-04-18 15:42:28.000000000","message":"I\u0027d even replace this with a static value to avoid dependency on actual time.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"596e2fdef039e12bb4c67b67b207cd7dec71c437","unresolved":true,"context_lines":[{"line_number":239,"context_line":"        )"},{"line_number":240,"context_line":"        for c, r in expected:"},{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c2c1a60f_47ba630a","line":242,"range":{"start_line":242,"start_character":18,"end_line":242,"end_character":29},"in_reply_to":"0a41d4cb_7efb9c45","updated":"2023-04-18 16:30:21.000000000","message":"Makes sense, will do.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b92b29bd34bfcccde853a99d1a862409b0401ae1","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        )"},{"line_number":240,"context_line":"        for c, r in expected:"},{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9871bbe_fc4a6d86","line":242,"range":{"start_line":242,"start_character":18,"end_line":242,"end_character":29},"in_reply_to":"c2c1a60f_47ba630a","updated":"2023-04-18 21:19:16.000000000","message":"Done","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"61152f292145f1fdf90aea7826698488ce6395c7","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"},{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                timeout \u003d random.choice([None, -1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7bcfc9db_c3a31795","line":244,"updated":"2023-04-18 15:42:28.000000000","message":"Please no :)","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"da9be7b4f4ca4b3860f26ca002e5a0b9d4f33685","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"},{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                timeout \u003d random.choice([None, -1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"6272ce68_984f85e5","line":244,"in_reply_to":"315a09bd_64bfeae0","updated":"2023-04-18 16:35:22.000000000","message":"IIUC we may end up waiting 10 seconds in case we specify a timeout and if the scenario timed_out. I think we can stick to one value and avoid randomness","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"095424fe55cb5513a4a5eb2e958a783c322a725d","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"},{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                timeout \u003d random.choice([None, -1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"df9661ba_5395d5e2","line":244,"in_reply_to":"6272ce68_984f85e5","updated":"2023-04-18 17:40:54.000000000","message":"I mock out time, btw, so that the first time it runs it returns now, and the second time it returns end_time so no actual waiting.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"596e2fdef039e12bb4c67b67b207cd7dec71c437","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"},{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                timeout \u003d random.choice([None, -1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"315a09bd_64bfeae0","line":244,"in_reply_to":"7bcfc9db_c3a31795","updated":"2023-04-18 16:30:21.000000000","message":"Fair. I did it to avoid having to type an additional 16 scenarios.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b92b29bd34bfcccde853a99d1a862409b0401ae1","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            Idl \u003d self._make_idl_mock(c)"},{"line_number":242,"context_line":"            now \u003d time.time()"},{"line_number":243,"context_line":"            if c.timeout:"},{"line_number":244,"context_line":"                timeout \u003d random.randint(1, 10)"},{"line_number":245,"context_line":"                end_time \u003d now + timeout - int(not c.timed_out)"},{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                timeout \u003d random.choice([None, -1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"487c9180_9de3cada","line":244,"in_reply_to":"df9661ba_5395d5e2","updated":"2023-04-18 21:19:16.000000000","message":"Done","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a4d900fa47fd36c515738e4e02edf21256ca7f22","unresolved":true,"context_lines":[{"line_number":276,"context_line":"                    ex.args \u003d (ex.args[0] + f\" {c}\",) + ex.args[1:]"},{"line_number":277,"context_line":"                    raise"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            do_test()"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"class TestMergeIntersection(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"2e124d34_8e2d3794","line":279,"updated":"2023-04-18 15:57:49.000000000","message":"I\u0027m not a fan of this generated approach for following reasons:\n 1. if one permutation test fails, the others won\u0027t get executed\n 2. it\u0027s hard to find which parameters permutation caused the test to fail\n 3. in case of failure the generated report will show just \u0027test_wait_for_change\u0027 as a failed test","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b92b29bd34bfcccde853a99d1a862409b0401ae1","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                    ex.args \u003d (ex.args[0] + f\" {c}\",) + ex.args[1:]"},{"line_number":277,"context_line":"                    raise"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            do_test()"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"class TestMergeIntersection(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"8fef336f_ac6aab29","line":279,"in_reply_to":"00ca44d9_53debfc9","updated":"2023-04-18 21:19:16.000000000","message":"Done","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"596e2fdef039e12bb4c67b67b207cd7dec71c437","unresolved":true,"context_lines":[{"line_number":276,"context_line":"                    ex.args \u003d (ex.args[0] + f\" {c}\",) + ex.args[1:]"},{"line_number":277,"context_line":"                    raise"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            do_test()"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"class TestMergeIntersection(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"66b109a2_bc885fbf","line":279,"in_reply_to":"2e124d34_8e2d3794","updated":"2023-04-18 16:30:21.000000000","message":"1. This is true\n2. The assert error message is changed so that it does show the parameters that failed\n3. This is true.\n\nI\u0027ll look into using multiply_scenarios which should address these concerns and the [None, -1] thing.","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"da9be7b4f4ca4b3860f26ca002e5a0b9d4f33685","unresolved":true,"context_lines":[{"line_number":276,"context_line":"                    ex.args \u003d (ex.args[0] + f\" {c}\",) + ex.args[1:]"},{"line_number":277,"context_line":"                    raise"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            do_test()"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"class TestMergeIntersection(base.TestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"00ca44d9_53debfc9","line":279,"in_reply_to":"66b109a2_bc885fbf","updated":"2023-04-18 16:35:22.000000000","message":"Ah nice, great you thought about 2 and sorry I missed that. thanks for that :)","commit_id":"ca2162fed72fc69ffaa406f24b6c7a1268d91f60"}]}
