)]}'
{"neutronclient/tests/unit/osc/v2/dynamic_routing/fakes.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    def create_dragents(attrs\u003dNone, count\u003d1):"},{"line_number":124,"context_line":"        \"\"\"Create one or multiple fake dynamic routing agents.\"\"\""},{"line_number":125,"context_line":"        agents \u003d []"},{"line_number":126,"context_line":"        for i in range(0, count):"},{"line_number":127,"context_line":"            agent \u003d FakeDRAgent.create_one_dragent(attrs)"},{"line_number":128,"context_line":"            agents.append(agent)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3a5a1bf5","line":126,"range":{"start_line":126,"start_character":17,"end_line":126,"end_character":32},"updated":"2020-01-15 04:56:05.000000000","message":"We usually use range(count), but.... range(0, count) is used consistently in this file, so it looks okay.","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"}],"neutronclient/tests/unit/osc/v2/dynamic_routing/test_bgp_dragent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    def setUp(self):"},{"line_number":26,"context_line":"        super(TestAddBgpSpeakerToDRAgent, self).setUp()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.neutronclient.add_bgp_speaker_to_dragent \u003d mock.Mock("},{"line_number":29,"context_line":"            return_value\u003dNone"},{"line_number":30,"context_line":"        )"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # Get the command object to test"},{"line_number":33,"context_line":"        self.cmd \u003d bgp_dragent.AddBgpSpeakerToDRAgent(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_da6ae780","line":30,"range":{"start_line":28,"start_character":8,"end_line":30,"end_character":9},"updated":"2020-01-15 04:56:05.000000000","message":"Use mock.patch.object instead.\n\n mock.patch.object(self.neutronclient, \"add_bgp_speaker_to_dragent\", return_value\u003dNone)\n\nIn addition, it is better to be moved to individual tests.","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def setUp(self):"},{"line_number":59,"context_line":"        super(TestRemoveBgpSpeakerFromDRAgent, self).setUp()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.neutronclient.remove_bgp_speaker_from_dragent \u003d mock.Mock("},{"line_number":62,"context_line":"            return_value\u003dNone"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        # Get the command object to test"},{"line_number":66,"context_line":"        self.cmd \u003d bgp_dragent.RemoveBgpSpeakerFromDRAgent("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7a6733ba","line":63,"range":{"start_line":61,"start_character":8,"end_line":63,"end_character":9},"updated":"2020-01-15 04:56:05.000000000","message":"ditto","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    _bgp_speaker_id \u003d _bgp_speaker[\u0027id\u0027]"},{"line_number":92,"context_line":"    _bgp_dragents \u003d fakes.FakeDRAgent.create_dragents(attrs)"},{"line_number":93,"context_line":"    columns \u003d (\u0027ID\u0027, \u0027Host\u0027, \u0027State\u0027, \u0027Alive\u0027)"},{"line_number":94,"context_line":"    data \u003d []"},{"line_number":95,"context_line":"    for _bgp_dragent in _bgp_dragents[\u0027agents\u0027]:"},{"line_number":96,"context_line":"        data.append(("},{"line_number":97,"context_line":"            _bgp_dragent[\u0027id\u0027],"},{"line_number":98,"context_line":"            _bgp_dragent[\u0027host\u0027],"},{"line_number":99,"context_line":"            _bgp_dragent[\u0027admin_state_up\u0027],"},{"line_number":100,"context_line":"            \u0027:-)\u0027 if _bgp_dragent[\u0027alive\u0027] else \u0027XXX\u0027))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def setUp(self):"},{"line_number":103,"context_line":"        super(TestListDRAgentsHostingBgpSpeaker, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_5a04b7c5","line":100,"range":{"start_line":94,"start_character":3,"end_line":100,"end_character":55},"updated":"2020-01-15 04:56:05.000000000","message":"Consider:\n\n  data \u003d [(_bgp_dragent[\u0027id\u0027], ...)\n          for _bgp_dragent in _bgp_dragents[\u0027agents\u0027]]","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    def setUp(self):"},{"line_number":103,"context_line":"        super(TestListDRAgentsHostingBgpSpeaker, self).setUp()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.neutronclient.list_dragents_hosting_bgp_speaker \u003d mock.Mock("},{"line_number":106,"context_line":"            return_value\u003dself._bgp_dragents"},{"line_number":107,"context_line":"        )"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # Get the command object to test"},{"line_number":110,"context_line":"        self.cmd \u003d bgp_dragent.ListDRAgentsHostingBgpSpeaker("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3aff7bb2","line":107,"range":{"start_line":105,"start_character":7,"end_line":107,"end_character":9},"updated":"2020-01-15 04:56:05.000000000","message":"ditto","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"}],"neutronclient/tests/unit/osc/v2/dynamic_routing/test_bgp_speaker.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def setUp(self):"},{"line_number":64,"context_line":"        super(TestListBgpSpeakersOnDRAgent, self).setUp()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.neutronclient.list_bgp_speaker_on_dragent \u003d mock.Mock("},{"line_number":67,"context_line":"            return_value\u003dself._bgp_speakers"},{"line_number":68,"context_line":"        )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Get the command object to test"},{"line_number":71,"context_line":"        self.cmd \u003d bgp_speaker.ListBgpSpeaker(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1a0e3fe4","line":68,"range":{"start_line":66,"start_character":8,"end_line":68,"end_character":9},"updated":"2020-01-15 04:56:05.000000000","message":"This is not a common way to mock a method. Consider using mock.patch(.object).","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"236710f63fb79039770ea33730ee95e35bdec986","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.neutronclient.list_bgp_speaker_on_dragent.assert_called_once_with("},{"line_number":84,"context_line":"            self._bgp_dragent_id)"},{"line_number":85,"context_line":"        self.assertEqual(self.columns, columns)"},{"line_number":86,"context_line":"        self.assertEqual(self.data, list(data))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class TestDeleteBgpSpeaker(fakes.TestNeutronDynamicRoutingOSCV2):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_daef47f8","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":24},"updated":"2020-01-15 04:56:05.000000000","message":"assertListEqual shows more readable output when it fails.","commit_id":"9f30d966b5f29a28a6215caf367a6c70e40e2209"}]}
