)]}'
{"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"895cb53f1d178eb0b4bc5b34017a54354e9bf04a","unresolved":false,"context_lines":[{"line_number":387,"context_line":"      }\"\"\")"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    GENESIS \u003d datetime.datetime(year\u003ddatetime.MINYEAR, month\u003d1, day\u003d1)"},{"line_number":390,"context_line":"    APOCALYPSE \u003d datetime.datetime(year\u003ddatetime.MAXYEAR, month\u003d12, day\u003d31,"},{"line_number":391,"context_line":"                                   hour\u003d23, minute\u003d59, second\u003d59)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def __init__(self, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F6qU%3D","line":390,"updated":"2014-03-12 23:55:16.000000000","message":"Could you please rename this consts to start with _ . I don\u0027t think that there is any sense for them to be ever accessed outside of the class.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":387,"context_line":"      }\"\"\")"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    GENESIS \u003d datetime.datetime(year\u003ddatetime.MINYEAR, month\u003d1, day\u003d1)"},{"line_number":390,"context_line":"    APOCALYPSE \u003d datetime.datetime(year\u003ddatetime.MAXYEAR, month\u003d12, day\u003d31,"},{"line_number":391,"context_line":"                                   hour\u003d23, minute\u003d59, second\u003d59)"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    def __init__(self, conf):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fxuo%3D","line":390,"in_reply_to":"AAAAWH%2F%2F6qU%3D","updated":"2014-03-13 21:59:14.000000000","message":"Done","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":527,"context_line":"                          \u0027last_sample_timestamp\u0027: data[\u0027timestamp\u0027]}}"},{"line_number":528,"context_line":"            )"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"        # only update first sample timestamp if actually ealier (the unusual"},{"line_number":531,"context_line":"        # out-of-order case)"},{"line_number":532,"context_line":"        # NOTE: a null first sample timestamp is not updated as this indicates"},{"line_number":533,"context_line":"        # a pre-existing resource document dating from before we started"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F2Jg%3D","line":530,"updated":"2014-03-13 16:00:18.000000000","message":"s/ealier/earlier/","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":527,"context_line":"                          \u0027last_sample_timestamp\u0027: data[\u0027timestamp\u0027]}}"},{"line_number":528,"context_line":"            )"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"        # only update first sample timestamp if actually ealier (the unusual"},{"line_number":531,"context_line":"        # out-of-order case)"},{"line_number":532,"context_line":"        # NOTE: a null first sample timestamp is not updated as this indicates"},{"line_number":533,"context_line":"        # a pre-existing resource document dating from before we started"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fxuc%3D","line":530,"in_reply_to":"AAAAWH%2F%2F2Jg%3D","updated":"2014-03-13 21:59:14.000000000","message":"Done","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":691,"context_line":"            limit \u003d 0"},{"line_number":692,"context_line":"        return db_collection.find(q, limit\u003dlimit, sort\u003dall_sort)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"    def _get_time_constrained_resources(self, q,"},{"line_number":695,"context_line":"                                        start_timestamp, start_timestamp_op,"},{"line_number":696,"context_line":"                                        end_timestamp, end_timestamp_op,"},{"line_number":697,"context_line":"                                        metaquery, resource):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F2DQ%3D","line":694,"updated":"2014-03-13 16:00:18.000000000","message":"If there is a chance, it would be good to use \u0027query\u0027 instead of \u0027q\u0027. It would make the code more readable.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":691,"context_line":"            limit \u003d 0"},{"line_number":692,"context_line":"        return db_collection.find(q, limit\u003dlimit, sort\u003dall_sort)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"    def _get_time_constrained_resources(self, q,"},{"line_number":695,"context_line":"                                        start_timestamp, start_timestamp_op,"},{"line_number":696,"context_line":"                                        end_timestamp, end_timestamp_op,"},{"line_number":697,"context_line":"                                        metaquery, resource):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fxtg%3D","line":694,"in_reply_to":"AAAAWH%2F%2F2DQ%3D","updated":"2014-03-13 21:59:14.000000000","message":"Good shout, done!","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        finally:"},{"line_number":755,"context_line":"            self.db[out].drop()"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"    def _get_floating_resources(self, q, metaquery, resource):"},{"line_number":758,"context_line":"        \"\"\"Return an iterable of models.Resource instances unconstrained"},{"line_number":759,"context_line":"           by timestamp."},{"line_number":760,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F2DA%3D","line":757,"updated":"2014-03-13 16:00:18.000000000","message":"s/q/query/ in this function, as above.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        finally:"},{"line_number":755,"context_line":"            self.db[out].drop()"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"    def _get_floating_resources(self, q, metaquery, resource):"},{"line_number":758,"context_line":"        \"\"\"Return an iterable of models.Resource instances unconstrained"},{"line_number":759,"context_line":"           by timestamp."},{"line_number":760,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fxtc%3D","line":757,"in_reply_to":"AAAAWH%2F%2F2DA%3D","updated":"2014-03-13 21:59:14.000000000","message":"Similarly.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        if pagination:"},{"line_number":807,"context_line":"            raise NotImplementedError(_(\u0027Pagination not implemented\u0027))"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        q \u003d {}"},{"line_number":810,"context_line":"        if user is not None:"},{"line_number":811,"context_line":"            q[\u0027user_id\u0027] \u003d user"},{"line_number":812,"context_line":"        if project is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F2C8%3D","line":809,"updated":"2014-03-13 16:00:18.000000000","message":"s/q/query/ in this function, as above.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        if pagination:"},{"line_number":807,"context_line":"            raise NotImplementedError(_(\u0027Pagination not implemented\u0027))"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        q \u003d {}"},{"line_number":810,"context_line":"        if user is not None:"},{"line_number":811,"context_line":"            q[\u0027user_id\u0027] \u003d user"},{"line_number":812,"context_line":"        if project is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Fxsw%3D","line":809,"in_reply_to":"AAAAWH%2F%2F2C8%3D","updated":"2014-03-13 21:59:14.000000000","message":"Done","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"2f5dd5d1d9d32aa53fa1ad3659510364f49e55dd","unresolved":false,"context_lines":[{"line_number":771,"context_line":"        keys \u003d base._handle_sort_key(\u0027resource\u0027)"},{"line_number":772,"context_line":"        sort_keys \u003d [\u0027last_sample_timestamp\u0027 if i \u003d\u003d \u0027timestamp\u0027 else i"},{"line_number":773,"context_line":"                     for i in keys]"},{"line_number":774,"context_line":"        sort_instructions \u003d self._build_sort_instructions(sort_keys)[0]"},{"line_number":775,"context_line":"        sort_instructions \u003d [(\u0027last_sample_timestamp\u0027, -1)]"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        for r in self.db.resource.find(query, sort\u003dsort_instructions):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FxF4%3D","line":774,"updated":"2014-03-13 23:06:37.000000000","message":"This line seems useless. I guess something is wrong with logic.","commit_id":"29c33bcc0fe103475d69849893b81264e0ab5796"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"83faef7b01f2c50bb0650c3eca9aa90684f8948c","unresolved":false,"context_lines":[{"line_number":771,"context_line":"        keys \u003d base._handle_sort_key(\u0027resource\u0027)"},{"line_number":772,"context_line":"        sort_keys \u003d [\u0027last_sample_timestamp\u0027 if i \u003d\u003d \u0027timestamp\u0027 else i"},{"line_number":773,"context_line":"                     for i in keys]"},{"line_number":774,"context_line":"        sort_instructions \u003d self._build_sort_instructions(sort_keys)[0]"},{"line_number":775,"context_line":"        sort_instructions \u003d [(\u0027last_sample_timestamp\u0027, -1)]"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        for r in self.db.resource.find(query, sort\u003dsort_instructions):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2Fw9o%3D","line":774,"in_reply_to":"AAAAWH%2F%2FxF4%3D","updated":"2014-03-13 23:24:46.000000000","message":"Great spot! What was I thinking?","commit_id":"29c33bcc0fe103475d69849893b81264e0ab5796"}],"ceilometer/tests/storage/test_storage_scenarios.py":[{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        ids \u003d set(r.resource_id for r in resources)"},{"line_number":261,"context_line":"        self.assertEqual(ids, set([\u0027resource-id\u0027]))"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def test_get_resources_by_user(self):"},{"line_number":264,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id\u0027))"},{"line_number":265,"context_line":"        self.assertTrue(len(resources) \u003d\u003d 2 or len(resources) \u003d\u003d 1)"},{"line_number":266,"context_line":"        ids \u003d set(r.resource_id for r in resources)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F0c8%3D","line":263,"updated":"2014-03-13 16:00:18.000000000","message":"As we have that behavior of storing multiple users for a single resource, it would be good to add one or more test case to highlight this. So another test case with checking that with using a query with \u0027user-id-alternate\u0027, then every DB driver returns the \u0027resource-id-alternate\u0027 resource would be good, and it also can be considered to add some more samples to cover this behavior of the DB drivers a bit more, than currently.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        ids \u003d set(r.resource_id for r in resources)"},{"line_number":261,"context_line":"        self.assertEqual(ids, set([\u0027resource-id\u0027]))"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def test_get_resources_by_user(self):"},{"line_number":264,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id\u0027))"},{"line_number":265,"context_line":"        self.assertTrue(len(resources) \u003d\u003d 2 or len(resources) \u003d\u003d 1)"},{"line_number":266,"context_line":"        ids \u003d set(r.resource_id for r in resources)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2FxkE%3D","line":263,"in_reply_to":"AAAAWH%2F%2F0c8%3D","updated":"2014-03-13 21:59:14.000000000","message":"Added the user\u003d\u0027user-id-alternate\u0027 case as suggested.","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"895cb53f1d178eb0b4bc5b34017a54354e9bf04a","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        ids \u003d set(r.resource_id for r in resources)"},{"line_number":267,"context_line":"        # tolerate storage driver only reporting latest owner of resource"},{"line_number":268,"context_line":"        self.assertEqual(set([]),"},{"line_number":269,"context_line":"                         ids - set([\u0027resource-id\u0027, \u0027resource-id-alternate\u0027]))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_resources_by_project(self):"},{"line_number":272,"context_line":"        resources \u003d list(self.conn.get_resources(project\u003d\u0027project-id\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F6rc%3D","line":269,"updated":"2014-03-12 23:55:16.000000000","message":"This condition seems a bit unclear to me. Maybe it would be simpler to replace it with something like this:\n\n# ensure that ids are present in response\nassertIsNotNone(ids \u0026 set([\u0027resource-id\u0027, \u0027resource-id-alternate\u0027]))","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f4d6fcae15f9d264090f0f94137ee95232317567","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        ids \u003d set(r.resource_id for r in resources)"},{"line_number":267,"context_line":"        # tolerate storage driver only reporting latest owner of resource"},{"line_number":268,"context_line":"        self.assertEqual(set([]),"},{"line_number":269,"context_line":"                         ids - set([\u0027resource-id\u0027, \u0027resource-id-alternate\u0027]))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_resources_by_project(self):"},{"line_number":272,"context_line":"        resources \u003d list(self.conn.get_resources(project\u003d\u0027project-id\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2FxsY%3D","line":269,"in_reply_to":"AAAAWH%2F%2F0is%3D","updated":"2014-03-13 21:59:14.000000000","message":"Done","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"b4ac7d1eb618b0d9f00a7b516b3d2746f71151d9","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        ids \u003d set(r.resource_id for r in resources)"},{"line_number":267,"context_line":"        # tolerate storage driver only reporting latest owner of resource"},{"line_number":268,"context_line":"        self.assertEqual(set([]),"},{"line_number":269,"context_line":"                         ids - set([\u0027resource-id\u0027, \u0027resource-id-alternate\u0027]))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_resources_by_project(self):"},{"line_number":272,"context_line":"        resources \u003d list(self.conn.get_resources(project\u003d\u0027project-id\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2F0is%3D","line":269,"in_reply_to":"AAAAWH%2F%2F6rc%3D","updated":"2014-03-13 16:00:18.000000000","message":"To get this test more readable, it would be good to cover the two cases that are expected with an \u0027or\u0027 relation, like in case of the expected number of received resources, so it would look like:\nself.assertTrue(ids \u003d\u003d set([\u0027resource-id\u0027, \u0027resource-id-alternate\u0027]) or ids \u003d\u003d set([\u0027resource-id\u0027]))","commit_id":"7b72d3395e47523b307f4ee682cb49ce891397bd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d0a00e87df3e0dc3a71543b84ab72066f8494a81","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FvHU%3D","line":277,"updated":"2014-03-14 06:06:18.000000000","message":"Transposed order in assertEqual(), please change it to (expected, observed).","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a26e6f6b0b90db7feff525d060f72c033c633ad7","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FugE%3D","line":277,"in_reply_to":"AAAAWH%2F%2FvHU%3D","updated":"2014-03-14 07:24:50.000000000","message":"Done","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d0a00e87df3e0dc3a71543b84ab72066f8494a81","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FvAE%3D","line":278,"updated":"2014-03-14 06:06:18.000000000","message":"I think this comment is not correct, as this resource has another owner (\u0027user-id\u0027) in case of other drivers, than MongoDB. So here the situation is something like last owner of the \u0027resource-id-alternate\u0027 owns the resource in all DB drivers. As the two test cases together shows the case of having samples:\n\nsample for resource \u0027resource-id\u0027 owned by user \u0027user-id\u0027 is received\n\nsample for resource \u0027resource-id-alternate\u0027 owned by user \u0027user-id\u0027 is received\n\nsample for resource \u0027resource-id-alternate\u0027 owned by user \u0027user-id-alternate\u0027 is received\n\n\nFor Mongo it means for \u0027user-id\u0027 query (test above) we get [\u0027resource-id\u0027] and for \u0027user-id-alternate\u0027 (this test), the return value is [\u0027resource-id-alternate\u0027]\n\nFor other backends for \u0027user-id\u0027 query (test above) we get [\u0027resource-id\u0027, \u0027resource-id-alternate] and for \u0027user-id-alternate\u0027 (this test), the return value is [\u0027resource-id-alternate\u0027]\n\nSo that Mongo only associates the last owner to the resource, the other backends maps all. But correct me, if I\u0027m wrong here, it can be possible. :)","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9d6b85a129d1abba3548ffb1755fcc84fe8cd057","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FuJ4%3D","line":278,"in_reply_to":"AAAAWH%2F%2FuL8%3D","updated":"2014-03-14 08:27:15.000000000","message":"Yes, let\u0027s agree to agree ;)","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"5a407dbaefb1d24fbf9b0831963ef57547e62f6e","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FuL8%3D","line":278,"in_reply_to":"AAAAWH%2F%2Fufc%3D","updated":"2014-03-14 08:21:30.000000000","message":"Yes, it is covered by that one, I just wanted to highlight, that the full scenario is more visible now, after having this test case too, just this comment was not properly expressed. So I assume we agree here now. :)","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a26e6f6b0b90db7feff525d060f72c033c633ad7","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_get_resources_by_alternate_user(self):"},{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Fufc%3D","line":278,"in_reply_to":"AAAAWH%2F%2FvAE%3D","updated":"2014-03-14 07:24:50.000000000","message":"Correct, the comment is badly expressed. I meant to convey:\n\n  only a single resource owned by this user ever\n\nThe other case you mention, with the difference between backend behavior (about which you are entirely correct), is covered by the previous test IIUC.\n\n(i.e. test_get_resources_by_user as opposed to test_get_resources_by_alternate_user).","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"d0a00e87df3e0dc3a71543b84ab72066f8494a81","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"},{"line_number":282,"context_line":"        resources \u003d list(self.conn.get_resources(project\u003d\u0027project-id\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FvHQ%3D","line":279,"updated":"2014-03-14 06:06:18.000000000","message":"assertEqual() order, same as above.","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a26e6f6b0b90db7feff525d060f72c033c633ad7","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        resources \u003d list(self.conn.get_resources(user\u003d\u0027user-id-alternate\u0027))"},{"line_number":277,"context_line":"        self.assertEqual(len(resources), 1)"},{"line_number":278,"context_line":"        # only a single owner of this resource ever"},{"line_number":279,"context_line":"        self.assertEqual(resources[0].resource_id, \u0027resource-id-alternate\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_get_resources_by_project(self):"},{"line_number":282,"context_line":"        resources \u003d list(self.conn.get_resources(project\u003d\u0027project-id\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2Fuf8%3D","line":279,"in_reply_to":"AAAAWH%2F%2FvHQ%3D","updated":"2014-03-14 07:24:50.000000000","message":"Done","commit_id":"abcfc2e8f3a3423f6e633a16ca830109ab563a08"}]}
