)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"2944b635b1c9f3ccb60af964a958cfcc5fa63aed","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Test only that at least 2 port notifications received"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Iab115087f619df46ea1b19289dec124d5ee394f5 breaks the networking-ovn"},{"line_number":10,"context_line":"gate since it is also getting a port \u0027ACTIVE\u0027 notification. This"},{"line_number":11,"context_line":"modifies the test to allow this case"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ia958d73a8eb8e3861d91ab3feba8fec2e643f71a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df3967d1_c504fe4c","line":10,"range":{"start_line":10,"start_character":31,"end_line":10,"end_character":58},"updated":"2017-08-01 23:09:33.000000000","message":"from _port_provisioned, right?","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"868edfcb117853035d64dbeb0a4fa15134d27844","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"            plugin.update_port(ctx, p[\u0027port\u0027][\u0027id\u0027], port)"},{"line_number":1083,"context_line":"        # updating in the host should result in two AFTER_UPDATE events."},{"line_number":1084,"context_line":"        # one to change the host_id, the second to commit a binding"},{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_95e04dfc","line":1085,"updated":"2017-08-02 15:59:06.000000000","message":"assertGreaterEqual(len(*), 2)","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4477f1bf6fe528ed2957df3ff0894f3839296bb0","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"            plugin.update_port(ctx, p[\u0027port\u0027][\u0027id\u0027], port)"},{"line_number":1083,"context_line":"        # updating in the host should result in two AFTER_UPDATE events."},{"line_number":1084,"context_line":"        # one to change the host_id, the second to commit a binding"},{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_28669bc2","line":1085,"in_reply_to":"df3967d1_95e04dfc","updated":"2017-08-04 14:50:48.000000000","message":"I don\u0027t really like assertGreaterEqual, etc. because it\u0027s a lot easier (for me) to intuitively grasp the comparison with the actual operators (same reason I wouldn\u0027t do subtract(2, 1) :p), but I\u0027ll change it if it is really a -1able on a gate-breakage fix. :)","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"2944b635b1c9f3ccb60af964a958cfcc5fa63aed","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"},{"line_number":1089,"context_line":"        self.assertIn(\u0027orig_binding\u0027, b_update_events[1])"},{"line_number":1090,"context_line":"        self.assertIn(\u0027new_binding\u0027, b_update_events[1])"},{"line_number":1091,"context_line":"        self.assertDictContainsSubset({\u0027context\u0027: ctx}, b_update_events[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_a5845ab2","line":1088,"range":{"start_line":1088,"start_character":41,"end_line":1088,"end_character":42},"updated":"2017-08-01 23:09:33.000000000","message":"i suppose, if we allow extra events, it\u0027s better to remove the assumption that these are the first two events.","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4477f1bf6fe528ed2957df3ff0894f3839296bb0","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"},{"line_number":1089,"context_line":"        self.assertIn(\u0027orig_binding\u0027, b_update_events[1])"},{"line_number":1090,"context_line":"        self.assertIn(\u0027new_binding\u0027, b_update_events[1])"},{"line_number":1091,"context_line":"        self.assertDictContainsSubset({\u0027context\u0027: ctx}, b_update_events[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_48caff1a","line":1088,"range":{"start_line":1088,"start_character":41,"end_line":1088,"end_character":42},"in_reply_to":"df3967d1_5c3a1234","updated":"2017-08-04 14:50:48.000000000","message":"Looks like it works for me anyway.","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4477f1bf6fe528ed2957df3ff0894f3839296bb0","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"},{"line_number":1089,"context_line":"        self.assertIn(\u0027orig_binding\u0027, b_update_events[1])"},{"line_number":1090,"context_line":"        self.assertIn(\u0027new_binding\u0027, b_update_events[1])"},{"line_number":1091,"context_line":"        self.assertDictContainsSubset({\u0027context\u0027: ctx}, b_update_events[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_c8a5cfa3","line":1088,"range":{"start_line":1088,"start_character":41,"end_line":1088,"end_character":42},"in_reply_to":"df3967d1_a5845ab2","updated":"2017-08-04 14:50:48.000000000","message":"Probably. It\u0027s safe in my particular use case, but who knows what other plugins do or the future holds.","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"3a25e3efda1144c6ae0c673c473cbd091624cd54","unresolved":false,"context_lines":[{"line_number":1085,"context_line":"        self.assertTrue(2 \u003c\u003d len(b_update_events))"},{"line_number":1086,"context_line":"        self.assertEqual({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                         b_update_events[0])"},{"line_number":1089,"context_line":"        self.assertIn(\u0027orig_binding\u0027, b_update_events[1])"},{"line_number":1090,"context_line":"        self.assertIn(\u0027new_binding\u0027, b_update_events[1])"},{"line_number":1091,"context_line":"        self.assertDictContainsSubset({\u0027context\u0027: ctx}, b_update_events[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_5c3a1234","line":1088,"range":{"start_line":1088,"start_character":41,"end_line":1088,"end_character":42},"in_reply_to":"df3967d1_a5845ab2","updated":"2017-08-02 14:33:24.000000000","message":"would \nself.assertIn({\u0027context\u0027: ctx,\n                          \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}, b_update_events) \n\nwork?","commit_id":"f37a89aaab4574e69c9e1ffc377b07e07316226d"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"b36b2ba1134b071230ffaf1b297e1b219b0caa1a","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"        # updating in the host should result in two AFTER_UPDATE events."},{"line_number":1084,"context_line":"        # one to change the host_id, the second to commit a binding"},{"line_number":1085,"context_line":"        self.assertGreaterEqual(len(b_update_events), 2)"},{"line_number":1086,"context_line":"        self.assertIn({\u0027context\u0027: ctx,"},{"line_number":1087,"context_line":"                       \u0027port\u0027: {\u0027binding:host_id\u0027: \u0027newhost\u0027}},"},{"line_number":1088,"context_line":"                      b_update_events)"},{"line_number":1089,"context_line":"        self.assertIn(\u0027orig_binding\u0027, b_update_events[1])"},{"line_number":1090,"context_line":"        self.assertIn(\u0027new_binding\u0027, b_update_events[1])"},{"line_number":1091,"context_line":"        self.assertDictContainsSubset({\u0027context\u0027: ctx}, b_update_events[1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_56a5c4b4","line":1088,"range":{"start_line":1086,"start_character":0,"end_line":1088,"end_character":38},"updated":"2017-08-04 22:18:13.000000000","message":"i don\u0027t think relaxing only this assertion, while leaving the \"[0]\" and \"[1]\" below, is a good idea.","commit_id":"8076754e016bcda1196550ad071ee9290080561a"}]}
