)]}'
{"ceilometer/tests/api/v2/test_statistics_scenarios.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"32752141dfb26fd6d575b939433749a77297a476","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"        self.assertEqual(groupby_vals_set, set(projects))"},{"line_number":1455,"context_line":""},{"line_number":1456,"context_line":"        aggregate \u003d \u0027cardinality/resource_id\u0027"},{"line_number":1457,"context_line":"        expected_values \u003d [2.0, 3.0, 1.0]"},{"line_number":1458,"context_line":"        standard_aggregates \u003d set([\u0027count\u0027, \u0027min\u0027, \u0027max\u0027, \u0027sum\u0027, \u0027avg\u0027])"},{"line_number":1459,"context_line":"        for r in data:"},{"line_number":1460,"context_line":"            grp \u003d r[\u0027groupby\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAVX%2F%2Fw5o%3D","line":1457,"updated":"2014-02-28 13:04:21.000000000","message":"Is it true that cardinality is a float value only because we need a common type for every aggregate value due to a wsme limitation?","commit_id":"5f31cd46a4d2424ee8323e6fc67a354e40af9221"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"a576baa6f230e947d1c2df3d550ac9408ca738c8","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"                    \u0027aggregate.param\u0027: \u0027injection_attack\u0027}"},{"line_number":1475,"context_line":"        resp \u003d self.get_json(self.PATH, expect_errors\u003dTrue,"},{"line_number":1476,"context_line":"                             groupby\u003d[\u0027project_id\u0027], **agg_args)"},{"line_number":1477,"context_line":"        self.assertEqual(500, resp.status_code)"},{"line_number":1478,"context_line":"        self.assertTrue(\u0027error_message\u0027 in resp.json)"},{"line_number":1479,"context_line":"        self.assertEqual(resp.json[\u0027error_message\u0027].get(\u0027faultstring\u0027),"},{"line_number":1480,"context_line":"                         \u0027Bad aggregate: cardinality.injection_attack\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2Fw%2FI%3D","line":1477,"updated":"2014-03-04 08:21:35.000000000","message":"It must be an 400 error, because this is a invalid user input. Perhaps create a storage.","commit_id":"96de4622876dd9ff44bace5ddc0c47a04cafc262"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"1ee34d9e7ee697857a1ca2119c3ed0a5aecfe96d","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"                    \u0027aggregate.param\u0027: \u0027injection_attack\u0027}"},{"line_number":1475,"context_line":"        resp \u003d self.get_json(self.PATH, expect_errors\u003dTrue,"},{"line_number":1476,"context_line":"                             groupby\u003d[\u0027project_id\u0027], **agg_args)"},{"line_number":1477,"context_line":"        self.assertEqual(500, resp.status_code)"},{"line_number":1478,"context_line":"        self.assertTrue(\u0027error_message\u0027 in resp.json)"},{"line_number":1479,"context_line":"        self.assertEqual(resp.json[\u0027error_message\u0027].get(\u0027faultstring\u0027),"},{"line_number":1480,"context_line":"                         \u0027Bad aggregate: cardinality.injection_attack\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FwRE%3D","line":1477,"in_reply_to":"AAAAVn%2F%2Fw%2FI%3D","updated":"2014-03-04 09:25:49.000000000","message":"Yep, good point, fixed now in this and the previous patch.","commit_id":"96de4622876dd9ff44bace5ddc0c47a04cafc262"}]}
