)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3f4d53f9def2234ff86bd48537705663eb7d882","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding alarm list filtering by state and meter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state and meter for both sqlalchemy"},{"line_number":10,"context_line":"and pymongo driver."},{"line_number":11,"context_line":"Partial-Bug: #1224298"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I393e2988142878d33363438671c240199ede65a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1ae5cdf2_1aee0ced","line":10,"updated":"2014-05-30 03:12:00.000000000","message":"why hbase is not supported?","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding alarm list filtering by state and meter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state and meter for both sqlalchemy"},{"line_number":10,"context_line":"and pymongo driver."},{"line_number":11,"context_line":"Partial-Bug: #1224298"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I393e2988142878d33363438671c240199ede65a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_f27d9b6f","line":10,"updated":"2014-06-03 08:49:20.000000000","message":"since mongo, sqlalchemy, hbase, db2, and log are the drivers for storage, and db2 is not support alarm, and the only missing part is meter for hbase, this commit message can be updated.","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Adding alarm list filtering by state and meter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state and meter for both sqlalchemy"},{"line_number":10,"context_line":"and pymongo driver."},{"line_number":11,"context_line":"Partial-Bug: #1224298"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I393e2988142878d33363438671c240199ede65a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_b1da284a","line":10,"in_reply_to":"1ae5cdf2_f27d9b6f","updated":"2014-06-03 13:06:20.000000000","message":"Done!","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state and meter for both sqlalchemy"},{"line_number":10,"context_line":"and pymongo driver."},{"line_number":11,"context_line":"Partial-Bug: #1224298"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I393e2988142878d33363438671c240199ede65a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_526e4f97","line":11,"updated":"2014-06-03 08:49:20.000000000","message":"IMHO, I think you can consider change the partial to closes, but need other reviewers\u0027 opinion too","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state and meter for both sqlalchemy"},{"line_number":10,"context_line":"and pymongo driver."},{"line_number":11,"context_line":"Partial-Bug: #1224298"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I393e2988142878d33363438671c240199ede65a4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1ae5cdf2_5118041e","line":11,"in_reply_to":"1ae5cdf2_526e4f97","updated":"2014-06-03 13:06:20.000000000","message":"Agree! I\u0027ll wait for other comments. Thanks!","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"f573971b374c8b0f80e1f802d4229f7368c5c6b8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding alarm list filtering by state and meter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding alarm list filtering by state for sqlalchemy, pymongo and"},{"line_number":10,"context_line":"hbase drivers"},{"line_number":11,"context_line":"Adding alarm list filtering by meter only for sqlalchemy and pymongo"},{"line_number":12,"context_line":"drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1ae5cdf2_da339bf4","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":36},"updated":"2014-06-09 13:57:40.000000000","message":"if you may, please, write SQLAlchemy, PyMongo, HBase here.","commit_id":"b069c38d5a2634383ced74731a425e0cbf2ca2e5"}],"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3f4d53f9def2234ff86bd48537705663eb7d882","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            alarm_table \u003d conn.table(self.ALARM_TABLE)"},{"line_number":221,"context_line":"            alarm_table.delete(alarm_id)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def get_alarms(self, name\u003dNone, user\u003dNone, state\u003dNone, meter\u003dNone,"},{"line_number":224,"context_line":"                   project\u003dNone, enabled\u003dNone, alarm_id\u003dNone, pagination\u003dNone):"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if pagination:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_9ab93cec","line":223,"updated":"2014-05-30 03:12:00.000000000","message":"-1: I don\u0027t know why hbase is not supported for these two, but if you do have reason for this, please raise NotImplementedError such as pagination param in L226","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3c623d0553553957810001dd3171612ad3bb13b","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if pagination:"},{"line_number":227,"context_line":"            raise NotImplementedError(\u0027Pagination not implemented\u0027)"},{"line_number":228,"context_line":"        if state:"},{"line_number":229,"context_line":"            raise NotImplementedError(\u0027Filter by state not implemented\u0027)"},{"line_number":230,"context_line":"        if meter:"},{"line_number":231,"context_line":"            raise NotImplementedError(\u0027Filter by meter not implemented\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_ebe40b3d","line":228,"updated":"2014-05-31 07:23:22.000000000","message":"at least the state is easy to be implemented, just add state\u003dstate in L234, the meter filter may be a bit hard (or impossible, please contact Nadya for more help)","commit_id":"beb76587cddc4b3e908361a3dc67afa9bd3a0dae"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"90588f8ee3d59e92653ed7f13e78a327eeb1136d","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if pagination:"},{"line_number":227,"context_line":"            raise NotImplementedError(\u0027Pagination not implemented\u0027)"},{"line_number":228,"context_line":"        if state:"},{"line_number":229,"context_line":"            raise NotImplementedError(\u0027Filter by state not implemented\u0027)"},{"line_number":230,"context_line":"        if meter:"},{"line_number":231,"context_line":"            raise NotImplementedError(\u0027Filter by meter not implemented\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_a4b851e6","line":228,"in_reply_to":"1ae5cdf2_ebe40b3d","updated":"2014-06-02 14:50:26.000000000","message":"OK! Thanks!","commit_id":"beb76587cddc4b3e908361a3dc67afa9bd3a0dae"}],"ceilometer/storage/impl_sqlalchemy.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"db60601ef5e616caa9237efaeecc85c9ebd1f628","unresolved":false,"context_lines":[{"line_number":708,"context_line":"            query \u003d query.filter(models.Alarm.state \u003d\u003d state)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        alarms \u003d self._retrieve_alarms(query)"},{"line_number":711,"context_line":"        "},{"line_number":712,"context_line":"        #TODO(cmart): improve this by using sqlalchemy.func factory"},{"line_number":713,"context_line":"        if meter is not None:"},{"line_number":714,"context_line":"            alarms \u003d filter(lambda row:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_7e254daa","line":711,"updated":"2014-05-29 21:12:58.000000000","message":"trailing whitespace","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3f4d53f9def2234ff86bd48537705663eb7d882","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        alarms \u003d self._retrieve_alarms(query)"},{"line_number":711,"context_line":"        "},{"line_number":712,"context_line":"        #TODO(cmart): improve this by using sqlalchemy.func factory"},{"line_number":713,"context_line":"        if meter is not None:"},{"line_number":714,"context_line":"            alarms \u003d filter(lambda row:"},{"line_number":715,"context_line":"                           row.rule.get(\u0027meter_name\u0027, None) \u003d\u003d meter,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_5ad89453","line":712,"updated":"2014-05-30 03:12:00.000000000","message":"nit: s/#TODO/# TODO/","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"},{"author":{"_account_id":7763,"name":"Alexei Kornienko","email":"akornienko@mirantis.com","username":"akornienko"},"change_message_id":"d303038d9bcbf2af82583d5c93665739bf32dc7f","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        alarms \u003d self._retrieve_alarms(query)"},{"line_number":711,"context_line":"        "},{"line_number":712,"context_line":"        #TODO(cmart): improve this by using sqlalchemy.func factory"},{"line_number":713,"context_line":"        if meter is not None:"},{"line_number":714,"context_line":"            alarms \u003d filter(lambda row:"},{"line_number":715,"context_line":"                           row.rule.get(\u0027meter_name\u0027, None) \u003d\u003d meter,"},{"line_number":716,"context_line":"                           alarms)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_3e63c5b2","line":713,"updated":"2014-05-29 21:15:43.000000000","message":"IMHO you should add a check that this is not the only filter provided. Otherwise you may end up reading and filtering all table in memory.","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"4422f048eed59315ce3b4a363e4673c7ab09aec6","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        alarms \u003d self._retrieve_alarms(query)"},{"line_number":711,"context_line":"        "},{"line_number":712,"context_line":"        #TODO(cmart): improve this by using sqlalchemy.func factory"},{"line_number":713,"context_line":"        if meter is not None:"},{"line_number":714,"context_line":"            alarms \u003d filter(lambda row:"},{"line_number":715,"context_line":"                           row.rule.get(\u0027meter_name\u0027, None) \u003d\u003d meter,"},{"line_number":716,"context_line":"                           alarms)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_765f1f0f","line":713,"in_reply_to":"1ae5cdf2_3e63c5b2","updated":"2014-05-30 12:51:19.000000000","message":"I\u0027m not sure if understand your comment, but in case that all other filters are empty, then we should check all the table in order to \"filter\" based on the meter_name. Could you explain it a little bit more? Thanks in advance!","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"}],"ceilometer/storage/pymongo_base.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"db60601ef5e616caa9237efaeecc85c9ebd1f628","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        :param name: The Alarm name."},{"line_number":238,"context_line":"        :param user: Optional ID for user that owns the resource."},{"line_number":239,"context_line":"        :param state: Optional string for alarm state."},{"line_number":240,"context_line":"        :param meter: Optional string for alarms associated to meter."},{"line_number":241,"context_line":"        :param project: Optional ID for project that owns the resource."},{"line_number":242,"context_line":"        :param enabled: Optional boolean to list disable alarm."},{"line_number":243,"context_line":"        :param alarm_id: Optional alarm_id to return one alarm."}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_feb5dd31","line":240,"updated":"2014-05-29 21:12:58.000000000","message":"s/associated to meter/associated with meter/","commit_id":"15fe7320745df28d114fe1d05da8ab9e3cec6ff5"}],"ceilometer/tests/api/v2/test_alarm_scenarios.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3c623d0553553957810001dd3171612ad3bb13b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         \u0027Unknown argument: \"timestamp\": \u0027"},{"line_number":197,"context_line":"                         \u0027not valid for this resource\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_alarms_query_with_meter(self):"},{"line_number":200,"context_line":"        fake_meter \u003d {"},{"line_number":201,"context_line":"            \u0027name\u0027: \u0027fake_meter\u0027,"},{"line_number":202,"context_line":"            \u0027value\u0027: 1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_ebbb2b0c","line":199,"updated":"2014-05-31 07:23:22.000000000","message":"-1: need test list alarms with state too","commit_id":"beb76587cddc4b3e908361a3dc67afa9bd3a0dae"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"e95aeaa3373c98517854c40a97da42f4b963c510","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                             q\u003d[{\u0027field\u0027: \u0027meter\u0027,"},{"line_number":234,"context_line":"                                 \u0027op\u0027: \u0027eq\u0027,"},{"line_number":235,"context_line":"                                 \u0027value\u0027: fake_meter[\u0027name\u0027]}],"},{"line_number":236,"context_line":"                             expect_errors\u003dTrue)"},{"line_number":237,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":238,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[0]"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_c59f405e","line":236,"updated":"2014-05-31 03:56:22.000000000","message":"according the failure message in jenkins log, I guess here we didn\u0027t need \"expect_errors\u003dTrue\", because the NotImplementedError will be accept in skip_if_not_implemented() method, if we add \"expect_errors\u003dTrue\" the NotImplementedError in *hbase* will accept to the *resp* and will not be accpeted skip_if_not_implemented(), status_code is 500 not 200","commit_id":"beb76587cddc4b3e908361a3dc67afa9bd3a0dae"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a3c623d0553553957810001dd3171612ad3bb13b","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                 \u0027value\u0027: fake_meter[\u0027name\u0027]}],"},{"line_number":236,"context_line":"                             expect_errors\u003dTrue)"},{"line_number":237,"context_line":"        self.assertEqual(resp.status_code, 200)"},{"line_number":238,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[0]"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"},{"line_number":240,"context_line":"                         [\u0027meter_name\u0027],"},{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_6b471b20","line":238,"updated":"2014-05-31 07:23:22.000000000","message":"-1: commonly, if a response to list request is 200, then response will be a json list, which has no attribute named body","commit_id":"beb76587cddc4b3e908361a3dc67afa9bd3a0dae"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         \u0027Unknown argument: \"timestamp\": \u0027"},{"line_number":197,"context_line":"                         \u0027not valid for this resource\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_alarms_query_with_meter(self):"},{"line_number":200,"context_line":"        fake_meter \u003d {"},{"line_number":201,"context_line":"            \u0027name\u0027: \u0027fake_meter\u0027,"},{"line_number":202,"context_line":"            \u0027value\u0027: 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1e14d3f3","line":199,"updated":"2014-06-03 08:49:20.000000000","message":"-1: since we have 3 threshold alarm, which meter\u003d(meter.test, meter.test, meter.mine, null), I think this test can be shorten to just filter meter\u003dmeter.mine, then assert the returned alarm\u0027s id\u003d\u003dc. The code can be really simple\n\ncheers","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         \u0027Unknown argument: \"timestamp\": \u0027"},{"line_number":197,"context_line":"                         \u0027not valid for this resource\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_alarms_query_with_meter(self):"},{"line_number":200,"context_line":"        fake_meter \u003d {"},{"line_number":201,"context_line":"            \u0027name\u0027: \u0027fake_meter\u0027,"},{"line_number":202,"context_line":"            \u0027value\u0027: 1"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_91060c85","line":199,"in_reply_to":"1ae5cdf2_1e14d3f3","updated":"2014-06-03 13:06:20.000000000","message":"OK. Will do that. Thanks","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                             q\u003d[{\u0027field\u0027: \u0027meter\u0027,"},{"line_number":234,"context_line":"                                 \u0027op\u0027: \u0027eq\u0027,"},{"line_number":235,"context_line":"                                 \u0027value\u0027: fake_meter[\u0027name\u0027]}],"},{"line_number":236,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":237,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":238,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a31cacc2","line":236,"updated":"2014-06-03 08:49:20.000000000","message":"nit: L236 is not necessary, expect_errors\u003dFalse is the default value","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                             q\u003d[{\u0027field\u0027: \u0027meter\u0027,"},{"line_number":234,"context_line":"                                 \u0027op\u0027: \u0027eq\u0027,"},{"line_number":235,"context_line":"                                 \u0027value\u0027: fake_meter[\u0027name\u0027]}],"},{"line_number":236,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":237,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":238,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_f1eaf0aa","line":236,"in_reply_to":"1ae5cdf2_a31cacc2","updated":"2014-06-03 13:06:20.000000000","message":"Done","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                 \u0027value\u0027: fake_meter[\u0027name\u0027]}],"},{"line_number":236,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":237,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":238,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"},{"line_number":240,"context_line":"                         [\u0027meter_name\u0027],"},{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_9e9b8371","line":238,"updated":"2014-06-03 08:49:20.000000000","message":"nit: pop() is a bit odd but ok, you can directly use resp[0]blablabla","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"},{"line_number":240,"context_line":"                         [\u0027meter_name\u0027],"},{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_alarms_query_with_state(self):"},{"line_number":244,"context_line":"        fake_state \u003d \u0027ok\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_fe9ac761","line":241,"updated":"2014-06-03 08:49:20.000000000","message":"-1: since we have agree to use assertEqual(expect, actual), new code should obey such rule","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":239,"context_line":"                         [\u0027threshold_rule\u0027]"},{"line_number":240,"context_line":"                         [\u0027meter_name\u0027],"},{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_alarms_query_with_state(self):"},{"line_number":244,"context_line":"        fake_state \u003d \u0027ok\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_b10b088d","line":241,"in_reply_to":"1ae5cdf2_fe9ac761","updated":"2014-06-03 13:06:20.000000000","message":"Done","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_alarms_query_with_state(self):"},{"line_number":244,"context_line":"        fake_state \u003d \u0027ok\u0027"},{"line_number":245,"context_line":"        alarm \u003d models.Alarm(name\u003d\u0027disabled\u0027,"},{"line_number":246,"context_line":"                             type\u003d\u0027combination\u0027,"},{"line_number":247,"context_line":"                             enabled\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1ebbf372","line":244,"updated":"2014-06-03 08:49:20.000000000","message":"nit: since you\u0027re creating a new alarm, the fake_state is not a suitable name, you can directly use \u0027ok\u0027, it is very common (and 1/3 valid value for state), so it is ok to not use a variable to indicate it","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                         fake_meter[\u0027name\u0027])"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def test_alarms_query_with_state(self):"},{"line_number":244,"context_line":"        fake_state \u003d \u0027ok\u0027"},{"line_number":245,"context_line":"        alarm \u003d models.Alarm(name\u003d\u0027disabled\u0027,"},{"line_number":246,"context_line":"                             type\u003d\u0027combination\u0027,"},{"line_number":247,"context_line":"                             enabled\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_f1d4b0be","line":244,"in_reply_to":"1ae5cdf2_1ebbf372","updated":"2014-06-03 13:06:20.000000000","message":"I was trying to assure test consistency by creating an alarm with a different state so I can make a query based on that state and get only one match. \nI know that I could use the string \u0027ok\u0027 to create the alarm, but in L#265 I\u0027ll be needing that string too. It just seems better for me to have that in a variable.","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                             q\u003d[{\u0027field\u0027: \u0027state\u0027,"},{"line_number":264,"context_line":"                                 \u0027op\u0027: \u0027eq\u0027,"},{"line_number":265,"context_line":"                                 \u0027value\u0027: fake_state}],"},{"line_number":266,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":267,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":268,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":269,"context_line":"                         [\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_7edcf712","line":266,"updated":"2014-06-03 08:49:20.000000000","message":"nit: remove it","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                             q\u003d[{\u0027field\u0027: \u0027state\u0027,"},{"line_number":264,"context_line":"                                 \u0027op\u0027: \u0027eq\u0027,"},{"line_number":265,"context_line":"                                 \u0027value\u0027: fake_state}],"},{"line_number":266,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":267,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":268,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":269,"context_line":"                         [\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_511e44bc","line":266,"in_reply_to":"1ae5cdf2_7edcf712","updated":"2014-06-03 13:06:20.000000000","message":"Done","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                                 \u0027value\u0027: fake_state}],"},{"line_number":266,"context_line":"                             expect_errors\u003dFalse)"},{"line_number":267,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":268,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":269,"context_line":"                         [\u0027state\u0027],"},{"line_number":270,"context_line":"                         fake_state)"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_be13dfb6","line":268,"updated":"2014-06-03 08:49:20.000000000","message":"nit: pop()-\u003e[0]","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de606f8fb4565073adc5f3f3cf42e5389c4a7d40","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":268,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":269,"context_line":"                         [\u0027state\u0027],"},{"line_number":270,"context_line":"                         fake_state)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_get_not_existing_alarm(self):"},{"line_number":273,"context_line":"        resp \u003d self.get_json(\u0027/alarms/alarm-id-3\u0027, expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1e3a1336","line":270,"updated":"2014-06-03 08:49:20.000000000","message":"-1: should be assertEqual(expect, actual)","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":10200,"name":"Christian Martinez","email":"chmartinez35@gmail.com","username":"cmart"},"change_message_id":"1b6128de97cebb0a098a995db21d1748885db463","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        self.assertEqual(1, len(resp))"},{"line_number":268,"context_line":"        self.assertEqual(resp.pop()"},{"line_number":269,"context_line":"                         [\u0027state\u0027],"},{"line_number":270,"context_line":"                         fake_state)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_get_not_existing_alarm(self):"},{"line_number":273,"context_line":"        resp \u003d self.get_json(\u0027/alarms/alarm-id-3\u0027, expect_errors\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_31253809","line":270,"in_reply_to":"1ae5cdf2_1e3a1336","updated":"2014-06-03 13:06:20.000000000","message":"Done","commit_id":"3e3962f6f176af9c389821cc16fa1047d1ce7b4c"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"5c3180de9037728520e10af73f7874f1318417fd","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                         \u0027Unknown argument: \"timestamp\": \u0027"},{"line_number":197,"context_line":"                         \u0027not valid for this resource\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_alarms_query_with_meter(self):"},{"line_number":200,"context_line":"        alarm_rule \u003d dict(comparison_operator\u003d\u0027eq\u0027,"},{"line_number":201,"context_line":"                          threshold\u003d1,"},{"line_number":202,"context_line":"                          statistic\u003d\u0027avg\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_9c40ca35","line":199,"updated":"2014-06-04 02:08:49.000000000","message":"nit: er, maybe my previous explanation is not explicit, what I mean is L200-L227 can be removed....","commit_id":"b107573b381b4ce43a65a9757b0548daf1851e01"}]}
