)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"66e548697517cc82d3170e37ec14ece360cf1b37","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Add tests to ensure that all works."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also: old compute_node_* methods tests refactoring,"},{"line_number":15,"context_line":"test_compute_node_stat_unchanged() rewrited"},{"line_number":16,"context_line":"(sqlalchemy_api dependence removed)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"blueprint db-api-tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAPX%2F%2Frhk%3D","line":15,"updated":"2013-06-12 21:52:33.000000000","message":"s/rewrited/rewritten/ (femtonit)","commit_id":"e6523c9c826af7aae6416abd2874ade10b2e19cb"}],"nova/tests/db/test_db_api.py":[{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"d4db122f3c7bf6f02c39c7f3a0100131b40eaa8b","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"            d[key] \u003d s[\u0027value\u0027]"},{"line_number":4498,"context_line":"        return d"},{"line_number":4499,"context_line":""},{"line_number":4500,"context_line":"    def _statsEqual(self, stats, new_stats):"},{"line_number":4501,"context_line":"        for k, v in stats.iteritems():"},{"line_number":4502,"context_line":"            self.assertEqual(v, int(new_stats[k]))"},{"line_number":4503,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2Fy1w%3D","line":4500,"updated":"2013-06-10 14:47:28.000000000","message":"I don\u0027t think this should be camelCase","commit_id":"997a87f5168bf58890314dbc51c843fa65cedcbf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"0f16f8091d5724c8cc6ae6b71a67b96f12c6941b","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"            d[key] \u003d s[\u0027value\u0027]"},{"line_number":4498,"context_line":"        return d"},{"line_number":4499,"context_line":""},{"line_number":4500,"context_line":"    def _statsEqual(self, stats, new_stats):"},{"line_number":4501,"context_line":"        for k, v in stats.iteritems():"},{"line_number":4502,"context_line":"            self.assertEqual(v, int(new_stats[k]))"},{"line_number":4503,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPX%2F%2FynY%3D","line":4500,"in_reply_to":"AAAAPX%2F%2Fy1w%3D","updated":"2013-06-10 16:22:56.000000000","message":"Done","commit_id":"997a87f5168bf58890314dbc51c843fa65cedcbf"}],"nova/tests/test_db_api.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"175bee55631dca9135ec8271c1592d7e9c1a9227","unresolved":false,"context_lines":[{"line_number":4447,"context_line":"            d[key] \u003d s[\u0027value\u0027]"},{"line_number":4448,"context_line":"        return d"},{"line_number":4449,"context_line":""},{"line_number":4450,"context_line":"    def _stats_Equal(self, stats, new_stats):"},{"line_number":4451,"context_line":"        for k, v in stats.iteritems():"},{"line_number":4452,"context_line":"            self.assertEqual(v, int(new_stats[k]))"},{"line_number":4453,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F2IQ%3D","line":4450,"updated":"2013-06-07 17:51:05.000000000","message":"mix of underscores and camelCase. For consistency, I think this method should be named either \"statsEqual\" or \"_statsEqual\" or \"_stats_equal\", but not \"_stats_Equal\"","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3527a73ead94f795e9d4d405197a6cde80d13778","unresolved":false,"context_lines":[{"line_number":4447,"context_line":"            d[key] \u003d s[\u0027value\u0027]"},{"line_number":4448,"context_line":"        return d"},{"line_number":4449,"context_line":""},{"line_number":4450,"context_line":"    def _stats_Equal(self, stats, new_stats):"},{"line_number":4451,"context_line":"        for k, v in stats.iteritems():"},{"line_number":4452,"context_line":"            self.assertEqual(v, int(new_stats[k]))"},{"line_number":4453,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2FzkU%3D","line":4450,"in_reply_to":"AAAAPX%2F%2F2IQ%3D","updated":"2013-06-10 08:13:08.000000000","message":"Done","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"175bee55631dca9135ec8271c1592d7e9c1a9227","unresolved":false,"context_lines":[{"line_number":4496,"context_line":"        nodes \u003d db.compute_node_get_all(self.ctxt)"},{"line_number":4497,"context_line":"        self.assertEqual(len(nodes), 0)"},{"line_number":4498,"context_line":""},{"line_number":4499,"context_line":"    def test_compute_node_search_by_hipervisor(self):"},{"line_number":4500,"context_line":"        nodes \u003d db.compute_node_search_by_hypervisor(self.ctxt, \u0027cadabra\u0027)"},{"line_number":4501,"context_line":"        self.assertEqual(1, len(nodes))"},{"line_number":4502,"context_line":"        node \u003d nodes[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F2Ik%3D","line":4499,"updated":"2013-06-07 17:51:05.000000000","message":"typo: s/hipervisor/hypervisor/","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3527a73ead94f795e9d4d405197a6cde80d13778","unresolved":false,"context_lines":[{"line_number":4496,"context_line":"        nodes \u003d db.compute_node_get_all(self.ctxt)"},{"line_number":4497,"context_line":"        self.assertEqual(len(nodes), 0)"},{"line_number":4498,"context_line":""},{"line_number":4499,"context_line":"    def test_compute_node_search_by_hipervisor(self):"},{"line_number":4500,"context_line":"        nodes \u003d db.compute_node_search_by_hypervisor(self.ctxt, \u0027cadabra\u0027)"},{"line_number":4501,"context_line":"        self.assertEqual(1, len(nodes))"},{"line_number":4502,"context_line":"        node \u003d nodes[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2FzkA%3D","line":4499,"in_reply_to":"AAAAPX%2F%2F2Ik%3D","updated":"2013-06-10 08:13:08.000000000","message":"Done","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"175bee55631dca9135ec8271c1592d7e9c1a9227","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"        self.assertEqual(len(nodes), 0)"},{"line_number":4498,"context_line":""},{"line_number":4499,"context_line":"    def test_compute_node_search_by_hipervisor(self):"},{"line_number":4500,"context_line":"        nodes \u003d db.compute_node_search_by_hypervisor(self.ctxt, \u0027cadabra\u0027)"},{"line_number":4501,"context_line":"        self.assertEqual(1, len(nodes))"},{"line_number":4502,"context_line":"        node \u003d nodes[0]"},{"line_number":4503,"context_line":"        self._assertEqualObjects(self.compute_node_dict, node,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F2IA%3D","line":4500,"updated":"2013-06-07 17:51:05.000000000","message":"Also, this test would be more convincing if there were more than one compute node in the sample, such that the query did not match the entire sample set :)","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"3527a73ead94f795e9d4d405197a6cde80d13778","unresolved":false,"context_lines":[{"line_number":4497,"context_line":"        self.assertEqual(len(nodes), 0)"},{"line_number":4498,"context_line":""},{"line_number":4499,"context_line":"    def test_compute_node_search_by_hipervisor(self):"},{"line_number":4500,"context_line":"        nodes \u003d db.compute_node_search_by_hypervisor(self.ctxt, \u0027cadabra\u0027)"},{"line_number":4501,"context_line":"        self.assertEqual(1, len(nodes))"},{"line_number":4502,"context_line":"        node \u003d nodes[0]"},{"line_number":4503,"context_line":"        self._assertEqualObjects(self.compute_node_dict, node,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2Fzj8%3D","line":4500,"in_reply_to":"AAAAPX%2F%2F2IA%3D","updated":"2013-06-10 08:13:08.000000000","message":"Done","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"a5b1eafede2b628aeb2f3a39d3c5bf71497da7f4","unresolved":false,"context_lines":[{"line_number":4532,"context_line":"        db.compute_node_update(self.ctxt, compute_node_id, new_values)"},{"line_number":4533,"context_line":"        updated_node \u003d db.compute_node_get(self.ctxt, compute_node_id)"},{"line_number":4534,"context_line":"        updated_stats \u003d updated_node[\u0027stats\u0027]"},{"line_number":4535,"context_line":"        for stat in updated_stats:"},{"line_number":4536,"context_line":"            self.assertEqual(stat[\u0027updated_at\u0027], stats_updated_at[stat[\u0027key\u0027]])"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"    def test_compute_node_stat_prune(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FcME%3D","line":4535,"updated":"2013-06-03 22:02:15.000000000","message":"Clever.  That\u0027s better than how I did this the first time.","commit_id":"9322d8c5daf6de0900cad3c0f76f67d1bfe02d89"}]}
