)]}'
{"neutron/tests/unit/objects/qos/test_policy.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bcbaa50ae88513bc204852a67e04fb0ea7985c50","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        context_mock.assert_called_once_with()"},{"line_number":83,"context_line":"        self.get_objects.assert_any_call("},{"line_number":84,"context_line":"            admin_context, self._test_class.db_model, _pager\u003dNone)"},{"line_number":85,"context_line":"        self.assertEqual("},{"line_number":86,"context_line":"            [test_base.get_obj_db_fields(obj) for obj in self.objs],"},{"line_number":87,"context_line":"            [test_base.get_obj_db_fields(obj) for obj in objs])"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_ed02b56e","line":85,"range":{"start_line":85,"start_character":13,"end_line":85,"end_character":24},"updated":"2016-09-06 13:26:09.000000000","message":"Also here","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad6b7fad07083740a8fa484cd405d0e6f8027748","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        context_mock.assert_called_once_with()"},{"line_number":83,"context_line":"        self.get_objects.assert_any_call("},{"line_number":84,"context_line":"            admin_context, self._test_class.db_model, _pager\u003dNone)"},{"line_number":85,"context_line":"        self.assertEqual("},{"line_number":86,"context_line":"            [test_base.get_obj_db_fields(obj) for obj in self.objs],"},{"line_number":87,"context_line":"            [test_base.get_obj_db_fields(obj) for obj in objs])"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_0d4199a9","line":85,"range":{"start_line":85,"start_character":13,"end_line":85,"end_character":24},"in_reply_to":"9a89bdaa_ed02b56e","updated":"2016-09-06 13:28:09.000000000","message":"Done","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"}],"neutron/tests/unit/objects/test_base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a48de4da6d4ca61c80bd82cb1a450e0c7ad9b7bf","unresolved":false,"context_lines":[{"line_number":397,"context_line":"def get_obj_db_fields(obj):"},{"line_number":398,"context_line":"    return {field: getattr(obj, field) for field in obj.fields"},{"line_number":399,"context_line":"            if field not in obj.synthetic_fields"},{"line_number":400,"context_line":"            if field in obj}"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"def get_value(generator, version):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_01108f00","line":400,"range":{"start_line":400,"start_character":12,"end_line":400,"end_character":14},"updated":"2016-09-06 13:10:29.000000000","message":"\u0027and\u0027 ? I didn\u0027t even know there could be two \u0027ifs\u0027","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1a213b2a5e7daafcb63d59d8a0d4f8bc2ee67194","unresolved":false,"context_lines":[{"line_number":397,"context_line":"def get_obj_db_fields(obj):"},{"line_number":398,"context_line":"    return {field: getattr(obj, field) for field in obj.fields"},{"line_number":399,"context_line":"            if field not in obj.synthetic_fields"},{"line_number":400,"context_line":"            if field in obj}"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"def get_value(generator, version):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_62ef94b0","line":400,"range":{"start_line":400,"start_character":12,"end_line":400,"end_character":14},"in_reply_to":"9a89bdaa_01108f00","updated":"2016-09-06 13:14:26.000000000","message":"TIL...","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a48de4da6d4ca61c80bd82cb1a450e0c7ad9b7bf","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                obj_db_api, \u0027get_objects\u0027,"},{"line_number":589,"context_line":"                side_effect\u003dself.fake_get_objects) as get_objects_mock:"},{"line_number":590,"context_line":"            objs \u003d self._test_class.get_objects(self.context)"},{"line_number":591,"context_line":"            self.assertEqual("},{"line_number":592,"context_line":"                [get_obj_db_fields(obj) for obj in self.objs],"},{"line_number":593,"context_line":"                [get_obj_db_fields(obj) for obj in objs])"},{"line_number":594,"context_line":"        get_objects_mock.assert_any_call("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_a18fe3ca","line":591,"range":{"start_line":591,"start_character":17,"end_line":591,"end_character":28},"updated":"2016-09-06 13:10:29.000000000","message":"Is the order guaranteed here? Would it be safer to call assertItemsEqual()?","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1aa7727f2eed00b59cef307f56df5058dbd2bd92","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                obj_db_api, \u0027get_objects\u0027,"},{"line_number":589,"context_line":"                side_effect\u003dself.fake_get_objects) as get_objects_mock:"},{"line_number":590,"context_line":"            objs \u003d self._test_class.get_objects(self.context)"},{"line_number":591,"context_line":"            self.assertEqual("},{"line_number":592,"context_line":"                [get_obj_db_fields(obj) for obj in self.objs],"},{"line_number":593,"context_line":"                [get_obj_db_fields(obj) for obj in objs])"},{"line_number":594,"context_line":"        get_objects_mock.assert_any_call("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_cda6d10f","line":591,"range":{"start_line":591,"start_character":17,"end_line":591,"end_character":28},"in_reply_to":"9a89bdaa_424b70c9","updated":"2016-09-06 13:20:50.000000000","message":"Nevermind, I mixed assertDictEqual with assertItemsEqual","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1a213b2a5e7daafcb63d59d8a0d4f8bc2ee67194","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                obj_db_api, \u0027get_objects\u0027,"},{"line_number":589,"context_line":"                side_effect\u003dself.fake_get_objects) as get_objects_mock:"},{"line_number":590,"context_line":"            objs \u003d self._test_class.get_objects(self.context)"},{"line_number":591,"context_line":"            self.assertEqual("},{"line_number":592,"context_line":"                [get_obj_db_fields(obj) for obj in self.objs],"},{"line_number":593,"context_line":"                [get_obj_db_fields(obj) for obj in objs])"},{"line_number":594,"context_line":"        get_objects_mock.assert_any_call("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_424b70c9","line":591,"range":{"start_line":591,"start_character":17,"end_line":591,"end_character":28},"in_reply_to":"9a89bdaa_a18fe3ca","updated":"2016-09-06 13:14:26.000000000","message":"https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertDictEqual\n\nShould be the same.","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a48de4da6d4ca61c80bd82cb1a450e0c7ad9b7bf","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    # TODO(ihrachys) swap the order of arguments to reflect the order of"},{"line_number":662,"context_line":"    # self.assert* methods"},{"line_number":663,"context_line":"    def _check_equal(self, observed, expected):"},{"line_number":664,"context_line":"        self.assertEqual(get_obj_db_fields(expected),"},{"line_number":665,"context_line":"                         get_obj_db_fields(observed))"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_7c6d7e97","line":664,"range":{"start_line":664,"start_character":13,"end_line":664,"end_character":24},"updated":"2016-09-06 13:10:29.000000000","message":"ditto","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1a213b2a5e7daafcb63d59d8a0d4f8bc2ee67194","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    # TODO(ihrachys) swap the order of arguments to reflect the order of"},{"line_number":662,"context_line":"    # self.assert* methods"},{"line_number":663,"context_line":"    def _check_equal(self, observed, expected):"},{"line_number":664,"context_line":"        self.assertEqual(get_obj_db_fields(expected),"},{"line_number":665,"context_line":"                         get_obj_db_fields(observed))"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_8261f83b","line":664,"range":{"start_line":664,"start_character":13,"end_line":664,"end_character":24},"in_reply_to":"9a89bdaa_7c6d7e97","updated":"2016-09-06 13:14:26.000000000","message":"dotto","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1aa7727f2eed00b59cef307f56df5058dbd2bd92","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    # TODO(ihrachys) swap the order of arguments to reflect the order of"},{"line_number":662,"context_line":"    # self.assert* methods"},{"line_number":663,"context_line":"    def _check_equal(self, observed, expected):"},{"line_number":664,"context_line":"        self.assertEqual(get_obj_db_fields(expected),"},{"line_number":665,"context_line":"                         get_obj_db_fields(observed))"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_8dd1295a","line":664,"range":{"start_line":664,"start_character":13,"end_line":664,"end_character":24},"in_reply_to":"9a89bdaa_8261f83b","updated":"2016-09-06 13:20:50.000000000","message":"Done","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"a48de4da6d4ca61c80bd82cb1a450e0c7ad9b7bf","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"        for field in remove_timestamps_from_fields(get_obj_db_fields(obj)):"},{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_5c78ba2b","line":1203,"range":{"start_line":1203,"start_character":17,"end_line":1203,"end_character":28},"updated":"2016-09-06 13:10:29.000000000","message":"ditto","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1a213b2a5e7daafcb63d59d8a0d4f8bc2ee67194","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"        for field in remove_timestamps_from_fields(get_obj_db_fields(obj)):"},{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_e25e4475","line":1203,"range":{"start_line":1203,"start_character":17,"end_line":1203,"end_character":28},"in_reply_to":"9a89bdaa_5c78ba2b","updated":"2016-09-06 13:14:26.000000000","message":"dotto","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1aa7727f2eed00b59cef307f56df5058dbd2bd92","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"        for field in remove_timestamps_from_fields(get_obj_db_fields(obj)):"},{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_0dc6f999","line":1203,"range":{"start_line":1203,"start_character":17,"end_line":1203,"end_character":28},"in_reply_to":"9a89bdaa_e25e4475","updated":"2016-09-06 13:20:50.000000000","message":"Done","commit_id":"850ea839b7a49eec624114ed2b8cf37c64444e47"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"7bfaee3c3259a14e84ef652b4ada48733a53d640","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                              self._test_class.count, self.context,"},{"line_number":662,"context_line":"                              fake_field\u003d\u0027xxx\u0027)"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"    def _validate_objects(self, expected, observed):"},{"line_number":665,"context_line":"        self.assertTrue(all(self._is_test_class(obj) for obj in observed))"},{"line_number":666,"context_line":"        self.assertEqual("},{"line_number":667,"context_line":"            sorted([self._test_class.modify_fields_from_db(db_obj)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_4d8f8a74","side":"PARENT","line":664,"range":{"start_line":664,"start_character":8,"end_line":664,"end_character":25},"updated":"2016-09-08 19:01:32.000000000","message":"God catch to remove the unnecessary methods","commit_id":"c8fea2b392d8eb5f43d17b9959540648ea6665b9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4d139c93d29ab750607b61901cee1b2048d6f60a","unresolved":false,"context_lines":[{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertItemsEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"},{"line_number":1207,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_a44c3543","line":1204,"range":{"start_line":1204,"start_character":21,"end_line":1204,"end_character":42},"updated":"2016-09-06 18:40:15.000000000","message":"Why do we compare keys here? Previously we compared the whole objects.","commit_id":"9cd230397c8ccec42f981bf5aa96379b07b0a95a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"613bf6e562363f14fd3b58414a06c94d6ae7cdef","unresolved":false,"context_lines":[{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertItemsEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"},{"line_number":1207,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_6f33c214","line":1204,"range":{"start_line":1204,"start_character":21,"end_line":1204,"end_character":42},"in_reply_to":"9a89bdaa_5eeeb2b4","updated":"2016-09-07 11:17:57.000000000","message":"Got it. I didn\u0027t get that composite_keys guarantee uniqueness. Now I\u0027m just wondering whether we should have another object in db that would not fit filters to be sure it\u0027s really returned based on filters - but this is out of scope.","commit_id":"9cd230397c8ccec42f981bf5aa96379b07b0a95a"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad36817c2047a62cc06d52c1d87ccce1f02d2b95","unresolved":false,"context_lines":[{"line_number":1201,"context_line":"            filters \u003d {field: [self.objs[0][field]]}"},{"line_number":1202,"context_line":"            new \u003d self._test_class.get_objects(self.context, **filters)"},{"line_number":1203,"context_line":"            self.assertItemsEqual("},{"line_number":1204,"context_line":"                [obj._get_composite_keys()],"},{"line_number":1205,"context_line":"                [obj_._get_composite_keys() for obj_ in new],"},{"line_number":1206,"context_line":"                \u0027Filtering by %s failed.\u0027 % field)"},{"line_number":1207,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_5eeeb2b4","line":1204,"range":{"start_line":1204,"start_character":21,"end_line":1204,"end_character":42},"in_reply_to":"9a89bdaa_a44c3543","updated":"2016-09-07 10:21:41.000000000","message":"The intent of the test is to validate that all filters return the needed objects, not to validate objects are completely identical. As long as the fields that uniquely identify the objects are the same, it\u0027s good enough for the needs of the test case.","commit_id":"9cd230397c8ccec42f981bf5aa96379b07b0a95a"}]}
