)]}'
{"networking_ovn/tests/functional/test_metadata_agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a31b64901c8f5f092ca3b97be7acaf0b4562e49d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        chassis \u003d self.sb_api.lookup(\u0027Chassis\u0027, self.chassis_name)"},{"line_number":143,"context_line":"        self.assertNotIn(ovn_const.OVN_AGENT_METADATA_SB_CFG_KEY,"},{"line_number":144,"context_line":"                         chassis.external_ids)"},{"line_number":145,"context_line":"        n_utils.wait_until_true(read_stats, timeout\u003d5)"},{"line_number":146,"context_line":"        new_nb_cfg \u003d self.nb_cfg + 1"},{"line_number":147,"context_line":"        row_event \u003d MetadataAgentHealthEvent(chassis.name, new_nb_cfg)"},{"line_number":148,"context_line":"        self.handler.watch_event(row_event)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3dedc723","line":145,"updated":"2019-09-02 08:28:49.000000000","message":"nit: can you do a custom exception here saying something like \"Agent hasn\u0027t been found in 5 seconds\". With this, we\u0027ll just get TimeoutException that doesn\u0027t say much.","commit_id":"b9041013417f909a8225859e1bd997d5141c0554"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"de7c52a4bd8caa898d717b3f8153d1a5b1d2d521","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        chassis \u003d self.sb_api.lookup(\u0027Chassis\u0027, self.chassis_name)"},{"line_number":143,"context_line":"        self.assertNotIn(ovn_const.OVN_AGENT_METADATA_SB_CFG_KEY,"},{"line_number":144,"context_line":"                         chassis.external_ids)"},{"line_number":145,"context_line":"        n_utils.wait_until_true(read_stats, timeout\u003d5)"},{"line_number":146,"context_line":"        new_nb_cfg \u003d self.nb_cfg + 1"},{"line_number":147,"context_line":"        row_event \u003d MetadataAgentHealthEvent(chassis.name, new_nb_cfg)"},{"line_number":148,"context_line":"        self.handler.watch_event(row_event)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_5dd0c3c8","line":145,"in_reply_to":"7faddb67_3dedc723","updated":"2019-09-02 09:42:54.000000000","message":"Agree, I have the same problem when the timeout expires and this generic exception is risen.","commit_id":"b9041013417f909a8225859e1bd997d5141c0554"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"8a8093755abb69b95adb3557d034528d05d7552c","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertNotIn(ovn_const.OVN_AGENT_METADATA_SB_CFG_KEY,"},{"line_number":144,"context_line":"                         chassis.external_ids)"},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            n_utils.wait_until_true(read_stats, timeout\u003d5)"},{"line_number":147,"context_line":"        except n_utils.WaitTimeout:"},{"line_number":148,"context_line":"            self.fail(\u0027AgentStats for chassis %(chassis_uuid)s not found\u0027 %"},{"line_number":149,"context_line":"                      {\u0027chassis_uuid\u0027: chassis.uuid})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_7030d508","line":146,"updated":"2019-09-17 09:05:06.000000000","message":"You can pass custom exception to wait_until_true like this:\n\n n_utils.wait_until_true(read_stats, timeout\u003d5, exception\u003dException(\"AgentStats ...\"))","commit_id":"81774005c7cff7b2c17efc2ae47c5a572c039f5c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"84ea615d6de7cb0353db08dea8947adb24d1a42c","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertNotIn(ovn_const.OVN_AGENT_METADATA_SB_CFG_KEY,"},{"line_number":144,"context_line":"                         chassis.external_ids)"},{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            n_utils.wait_until_true(read_stats, timeout\u003d5)"},{"line_number":147,"context_line":"        except n_utils.WaitTimeout:"},{"line_number":148,"context_line":"            self.fail(\u0027AgentStats for chassis %(chassis_uuid)s not found\u0027 %"},{"line_number":149,"context_line":"                      {\u0027chassis_uuid\u0027: chassis.uuid})"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_dc20c3fa","line":146,"in_reply_to":"3fa7e38b_7030d508","updated":"2019-09-17 12:07:32.000000000","message":"Sure I can do it. I usually prefer to use self.fail, but I can pass AssertionError.\n\n\ndef fail(msg\u003dNone):\n    \"\"\"Fail immediately, with the given message.\n\n    This method is equivalent to TestCase.fail without requiring a\n    testcase instance (usefully for reducing coupling).\n    \"\"\"\n    raise unittest2.TestCase.failureException(msg)\n\n\nclass TestCase(unittest.TestCase):\n    failureException \u003d AssertionError","commit_id":"81774005c7cff7b2c17efc2ae47c5a572c039f5c"}]}
