)]}'
{"monasca_api/common/repositories/sqla/alarms_repository.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                query \u003d query.where(or_(ad.c.severity \u003d\u003d bindparam("},{"line_number":295,"context_line":"                    \u0027b_severity\u0027 + str(i)) for i in range(len(severities))))"},{"line_number":296,"context_line":"                for i, s in enumerate(severities):"},{"line_number":297,"context_line":"                    parms[\u0027b_severity\u0027 + str(i)] \u003d s.encode(\u0027utf-8\u0027) if six.PY2 else s"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            if \u0027state\u0027 in query_parms:"},{"line_number":300,"context_line":"                query \u003d query.where(a.c.state \u003d\u003d bindparam(\u0027b_state\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_e12de0a8","line":297,"range":{"start_line":297,"start_character":72,"end_line":297,"end_character":79},"updated":"2019-03-06 14:27:20.000000000","message":"change order to have py3 tested first","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":294,"context_line":"                query \u003d query.where(or_(ad.c.severity \u003d\u003d bindparam("},{"line_number":295,"context_line":"                    \u0027b_severity\u0027 + str(i)) for i in range(len(severities))))"},{"line_number":296,"context_line":"                for i, s in enumerate(severities):"},{"line_number":297,"context_line":"                    parms[\u0027b_severity\u0027 + str(i)] \u003d s.encode(\u0027utf-8\u0027) if six.PY2 else s"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            if \u0027state\u0027 in query_parms:"},{"line_number":300,"context_line":"                query \u003d query.where(a.c.state \u003d\u003d bindparam(\u0027b_state\u0027))"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_643ec32a","line":297,"range":{"start_line":297,"start_character":72,"end_line":297,"end_character":79},"in_reply_to":"5fc1f717_e12de0a8","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                query \u003d query.where(a.c.lifecycle_state \u003d\u003d bindparam(\u0027b_lifecycle_state\u0027))"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"            if \u0027link\u0027 in query_parms:"},{"line_number":525,"context_line":"                parms[\u0027b_link\u0027] \u003d query_parms[\u0027link\u0027] if six.PY3 else\\"},{"line_number":526,"context_line":"                    query_parms[\u0027link\u0027].encode(\u0027utf8\u0027)"},{"line_number":527,"context_line":"                query \u003d query.where(a.c.link \u003d\u003d bindparam(\u0027b_link\u0027))"},{"line_number":528,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_c11ea46f","line":525,"range":{"start_line":525,"start_character":69,"end_line":525,"end_character":70},"updated":"2019-03-06 14:27:20.000000000","message":"add space","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":522,"context_line":"                query \u003d query.where(a.c.lifecycle_state \u003d\u003d bindparam(\u0027b_lifecycle_state\u0027))"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"            if \u0027link\u0027 in query_parms:"},{"line_number":525,"context_line":"                parms[\u0027b_link\u0027] \u003d query_parms[\u0027link\u0027] if six.PY3 else\\"},{"line_number":526,"context_line":"                    query_parms[\u0027link\u0027].encode(\u0027utf8\u0027)"},{"line_number":527,"context_line":"                query \u003d query.where(a.c.link \u003d\u003d bindparam(\u0027b_link\u0027))"},{"line_number":528,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_2448bbca","line":525,"range":{"start_line":525,"start_character":69,"end_line":525,"end_character":70},"in_reply_to":"5fc1f717_c11ea46f","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                                            sub_query_md.c.dimension_set_id \u003d\u003d"},{"line_number":563,"context_line":"                                            mdd.c.metric_dimension_set_id))"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"                    parms[md_name] \u003d metric_dimension[0] if six.PY3 else\\"},{"line_number":566,"context_line":"                        metric_dimension[0].encode(\u0027utf8\u0027)"},{"line_number":567,"context_line":"                    parms[md_value] \u003d metric_dimension[1] if six.PY3 else \\"},{"line_number":568,"context_line":"                        metric_dimension[1].encode(\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_81189c81","line":565,"range":{"start_line":565,"start_character":72,"end_line":565,"end_character":73},"updated":"2019-03-06 14:27:20.000000000","message":"add space","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":562,"context_line":"                                            sub_query_md.c.dimension_set_id \u003d\u003d"},{"line_number":563,"context_line":"                                            mdd.c.metric_dimension_set_id))"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"                    parms[md_name] \u003d metric_dimension[0] if six.PY3 else\\"},{"line_number":566,"context_line":"                        metric_dimension[0].encode(\u0027utf8\u0027)"},{"line_number":567,"context_line":"                    parms[md_value] \u003d metric_dimension[1] if six.PY3 else \\"},{"line_number":568,"context_line":"                        metric_dimension[1].encode(\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_e41393b7","line":565,"range":{"start_line":565,"start_character":72,"end_line":565,"end_character":73},"in_reply_to":"5fc1f717_81189c81","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/common/repositories/sqla/notifications_repository.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @sql_repository.sql_try_catch_block"},{"line_number":181,"context_line":"    def find_notification_by_name(self, tenant_id, name):"},{"line_number":182,"context_line":"        name \u003d name.encode(\u0027utf8\u0027) if six.PY2 else name"},{"line_number":183,"context_line":"        with self._db_engine.connect() as conn:"},{"line_number":184,"context_line":"            return conn.execute(self._select_nm_name_query,"},{"line_number":185,"context_line":"                                b_tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_f5a7da4e","line":182,"range":{"start_line":182,"start_character":39,"end_line":182,"end_character":45},"updated":"2019-03-06 14:27:20.000000000","message":"change to have python 3 check","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @sql_repository.sql_try_catch_block"},{"line_number":181,"context_line":"    def find_notification_by_name(self, tenant_id, name):"},{"line_number":182,"context_line":"        name \u003d name.encode(\u0027utf8\u0027) if six.PY2 else name"},{"line_number":183,"context_line":"        with self._db_engine.connect() as conn:"},{"line_number":184,"context_line":"            return conn.execute(self._select_nm_name_query,"},{"line_number":185,"context_line":"                                b_tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_0419ffd5","line":182,"range":{"start_line":182,"start_character":39,"end_line":182,"end_character":45},"in_reply_to":"5fc1f717_f5a7da4e","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_a_repository.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":675,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":676,"context_line":"                                   limit\u003d1000)"},{"line_number":677,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":678,"context_line":"        expected \u003d [self.alarm_compound]"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        self.assertEqual(res, expected)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_1524e6c5","line":677,"range":{"start_line":677,"start_character":8,"end_line":677,"end_character":11},"updated":"2019-03-06 14:27:20.000000000","message":"please, use different name","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":675,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":676,"context_line":"                                   limit\u003d1000)"},{"line_number":677,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":678,"context_line":"        expected \u003d [self.alarm_compound]"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        self.assertEqual(res, expected)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_4ea8861e","line":677,"range":{"start_line":677,"start_character":8,"end_line":677,"end_character":11},"in_reply_to":"5fc1f717_1524e6c5","updated":"2019-03-07 10:16:57.000000000","message":"in my opinion there is no good reason to create new variable here, especially that whole method use this schema.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":837,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":838,"context_line":"                    self.alarm2,"},{"line_number":839,"context_line":"                    self.alarm3]"},{"line_number":840,"context_line":"        self.assertEqual(expected, res)"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027CRITICAL\u0027}"},{"line_number":843,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_10407435","line":840,"range":{"start_line":840,"start_character":25,"end_line":840,"end_character":38},"updated":"2019-03-06 14:27:20.000000000","message":"use same order like previously","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":837,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":838,"context_line":"                    self.alarm2,"},{"line_number":839,"context_line":"                    self.alarm3]"},{"line_number":840,"context_line":"        self.assertEqual(expected, res)"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027CRITICAL\u0027}"},{"line_number":843,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_aee9ea80","line":840,"range":{"start_line":840,"start_character":25,"end_line":840,"end_character":38},"in_reply_to":"5fc1f717_10407435","updated":"2019-03-07 10:16:57.000000000","message":"def assertEqual(self, expected, observed, message\u003d\u0027\u0027):\n\nExpected should be firs element. In code sometimes expected value is first and sometimes is second. When  i create new method i prefer to use proper order.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                                   limit\u003d1000)"},{"line_number":846,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":847,"context_line":"        expected \u003d [self.alarm_compound]"},{"line_number":848,"context_line":"        self.assertEqual(expected, res)"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027LOW|CRITICAL\u0027}"},{"line_number":851,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_d0498c60","line":848,"range":{"start_line":848,"start_character":25,"end_line":848,"end_character":38},"updated":"2019-03-06 14:27:20.000000000","message":"use same order like previously","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"8827cd1b4da3db2954438061de80255491e1a532","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                                   limit\u003d1000)"},{"line_number":846,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":847,"context_line":"        expected \u003d [self.alarm_compound]"},{"line_number":848,"context_line":"        self.assertEqual(expected, res)"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027LOW|CRITICAL\u0027}"},{"line_number":851,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_7f940e8c","line":848,"range":{"start_line":848,"start_character":25,"end_line":848,"end_character":38},"in_reply_to":"5fc1f717_d0498c60","updated":"2019-03-07 10:44:14.000000000","message":"pleas check https://review.openstack.org/#/c/632718/20/monasca_api/tests/test_a_repository.py@840","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":856,"context_line":"                    self.alarm2,"},{"line_number":857,"context_line":"                    self.alarm_compound,"},{"line_number":858,"context_line":"                    self.alarm3]"},{"line_number":859,"context_line":"        self.assertEqual(expected, res)"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    def test_should_count(self):"},{"line_number":862,"context_line":"        tenant_id \u003d \u0027bob\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_f0460850","line":859,"range":{"start_line":859,"start_character":25,"end_line":859,"end_character":38},"updated":"2019-03-06 14:27:20.000000000","message":"use same order like previously","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"8827cd1b4da3db2954438061de80255491e1a532","unresolved":false,"context_lines":[{"line_number":856,"context_line":"                    self.alarm2,"},{"line_number":857,"context_line":"                    self.alarm_compound,"},{"line_number":858,"context_line":"                    self.alarm3]"},{"line_number":859,"context_line":"        self.assertEqual(expected, res)"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    def test_should_count(self):"},{"line_number":862,"context_line":"        tenant_id \u003d \u0027bob\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_1f914a9a","line":859,"range":{"start_line":859,"start_character":25,"end_line":859,"end_character":38},"in_reply_to":"5fc1f717_f0460850","updated":"2019-03-07 10:44:14.000000000","message":"pleas check https://review.openstack.org/#/c/632718/20/monasca_api/tests/test_a_repository.py@840","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        tenant_id \u003d \u0027bob\u0027"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id)"},{"line_number":865,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":868,"context_line":"                                         limit\u003d1000)"},{"line_number":869,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":872,"context_line":"                                         limit\u003d1000,"},{"line_number":873,"context_line":"                                         offset\u003d10)"},{"line_number":874,"context_line":"        self.assertEqual([], res)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        alarm_def_id \u003d self.alarm_compound[\u0027alarm_definition\u0027][\u0027id\u0027]"},{"line_number":877,"context_line":"        query_parms \u003d {\u0027alarm_definition_id\u0027: alarm_def_id}"},{"line_number":878,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":879,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":880,"context_line":"                                         limit\u003d1000)"},{"line_number":881,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.sys_mem\u0027}"},{"line_number":884,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":885,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":886,"context_line":"                                         limit\u003d1000)"},{"line_number":887,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"        query_parms \u003d {\u0027state\u0027: \u0027UNDETERMINED\u0027}"},{"line_number":890,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":891,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":892,"context_line":"                                         limit\u003d1000)"},{"line_number":893,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        time_now \u003d \u00272015-03-15T00:00:00.0Z\u0027"},{"line_number":896,"context_line":"        query_parms \u003d {\u0027state_updated_start_time\u0027: time_now}"},{"line_number":897,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":898,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":899,"context_line":"                                         limit\u003d1000)"},{"line_number":900,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027LOW\u0027}"},{"line_number":903,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":904,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":905,"context_line":"                                         limit\u003d1000)"},{"line_number":906,"context_line":"        self.assertEqual([{\u0027count\u0027: 3}], res)"},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"        query_parms \u003d {\u0027lifecycle_state\u0027: \u0027OPEN\u0027}"},{"line_number":909,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":910,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":911,"context_line":"                                         limit\u003d1000)"},{"line_number":912,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"        query_parms \u003d {\u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":915,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":916,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":917,"context_line":"                                         limit\u003d1000)"},{"line_number":918,"context_line":"        self.assertEqual([{\u0027count\u0027: 3}], res)"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"        query_parms \u003d {\u0027metric_dimensions\u0027: {\u0027flavor_id\u0027: \u0027222\u0027}}"},{"line_number":921,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":922,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":923,"context_line":"                                         limit\u003d1000)"},{"line_number":924,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027metric_name\u0027]}"},{"line_number":927,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":928,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":929,"context_line":"                                         limit\u003d1000)"},{"line_number":930,"context_line":"        expected \u003d [{\u0027count\u0027: 4, \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027},"},{"line_number":931,"context_line":"                    {\u0027count\u0027: 1, \u0027metric_name\u0027: \u0027cpu.sys_mem\u0027}]"},{"line_number":932,"context_line":"        self.assertEqual(expected, res)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027dimension_name\u0027]}"},{"line_number":935,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":936,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":937,"context_line":"                                         limit\u003d1000)"},{"line_number":938,"context_line":"        expected \u003d [{\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027extra\u0027},"},{"line_number":939,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_name\u0027: \u0027flavor_id\u0027},"},{"line_number":940,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027hostname\u0027},"},{"line_number":941,"context_line":"                    {\u0027count\u0027: 2, \u0027dimension_name\u0027: \u0027instance_id\u0027},"},{"line_number":942,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027region\u0027},"},{"line_number":943,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_name\u0027: \u0027service\u0027}]"},{"line_number":944,"context_line":"        self.assertEqual(expected, res)"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027dimension_value\u0027]}"},{"line_number":947,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":948,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":949,"context_line":"                                         limit\u003d1000)"},{"line_number":950,"context_line":"        expected \u003d [{\u0027count\u0027: 2, \u0027dimension_value\u0027: \u0027123\u0027},"},{"line_number":951,"context_line":"                    {\u0027count\u0027: 2, \u0027dimension_value\u0027: \u0027222\u0027},"},{"line_number":952,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027333\u0027},"},{"line_number":953,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027colorado\u0027},"},{"line_number":954,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_value\u0027: \u0027monitoring\u0027},"},{"line_number":955,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027roland\u0027},"},{"line_number":956,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027vivi\u0027}]"},{"line_number":957,"context_line":"        self.assertEqual(expected, res)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        query_parms \u003d {\u0027group_by\u0027: []}"},{"line_number":960,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":961,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":962,"context_line":"                                         limit\u003d1000)"},{"line_number":963,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"    def test_should_sort_and_find(self):"},{"line_number":966,"context_line":"        tenant_id \u003d \u0027bob\u0027"},{"line_number":967,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":968,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id\u0027]}"},{"line_number":969,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":970,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":971,"context_line":"                                   limit\u003d1000)"},{"line_number":972,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":973,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":974,"context_line":"                    self.alarm2,"},{"line_number":975,"context_line":"                    self.alarm_compound,"},{"line_number":976,"context_line":"                    self.alarm3]"},{"line_number":977,"context_line":"        self.assertEqual(expected, res)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":980,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_definition_id\u0027]}"},{"line_number":981,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":982,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":983,"context_line":"                                   limit\u003d1000)"},{"line_number":984,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":985,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":986,"context_line":"                    self.alarm2,"},{"line_number":987,"context_line":"                    self.alarm3,"},{"line_number":988,"context_line":"                    self.alarm_compound]"},{"line_number":989,"context_line":"        self.assertEqual(expected, res)"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":992,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_definition_name\u0027]}"},{"line_number":993,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":994,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":995,"context_line":"                                   limit\u003d1000)"},{"line_number":996,"context_line":"        expected \u003d [self.alarm_compound,"},{"line_number":997,"context_line":"                    self.alarm1,"},{"line_number":998,"context_line":"                    self.alarm2,"},{"line_number":999,"context_line":"                    self.alarm3]"},{"line_number":1000,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1001,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1004,"context_line":"                       \u0027sort_by\u0027: [\u0027severity\u0027]}"},{"line_number":1005,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1006,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1007,"context_line":"                                   limit\u003d1000)"},{"line_number":1008,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1009,"context_line":"                    self.alarm2,"},{"line_number":1010,"context_line":"                    self.alarm3,"},{"line_number":1011,"context_line":"                    self.alarm_compound]"},{"line_number":1012,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1016,"context_line":"                       \u0027sort_by\u0027: [\u0027state\u0027]}"},{"line_number":1017,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1018,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1019,"context_line":"                                   limit\u003d1000)"},{"line_number":1020,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1021,"context_line":"                    self.alarm2,"},{"line_number":1022,"context_line":"                    self.alarm_compound,"},{"line_number":1023,"context_line":"                    self.alarm3]"},{"line_number":1024,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1025,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1028,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id asc\u0027]}"},{"line_number":1029,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1030,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1031,"context_line":"                                   limit\u003d1000)"},{"line_number":1032,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1033,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1034,"context_line":"                    self.alarm2,"},{"line_number":1035,"context_line":"                    self.alarm_compound,"},{"line_number":1036,"context_line":"                    self.alarm3]"},{"line_number":1037,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1040,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id desc\u0027]}"},{"line_number":1041,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1042,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1043,"context_line":"                                   limit\u003d1000)"},{"line_number":1044,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1045,"context_line":"        expected \u003d [self.alarm3,"},{"line_number":1046,"context_line":"                    self.alarm_compound,"},{"line_number":1047,"context_line":"                    self.alarm2,"},{"line_number":1048,"context_line":"                    self.alarm1]"},{"line_number":1049,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1052,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id nfl\u0027]}"},{"line_number":1053,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1054,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1055,"context_line":"                                   limit\u003d1000)"},{"line_number":1056,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1057,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1058,"context_line":"                    self.alarm2,"},{"line_number":1059,"context_line":"                    self.alarm_compound,"},{"line_number":1060,"context_line":"                    self.alarm3]"},{"line_number":1061,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    def test_should_update(self):"},{"line_number":1064,"context_line":"        tenant_id \u003d \u0027bob\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_3094908b","line":1061,"range":{"start_line":865,"start_character":25,"end_line":1061,"end_character":38},"updated":"2019-03-06 14:27:20.000000000","message":"change asserts to have expected values as last one (and same order like previously)","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"8827cd1b4da3db2954438061de80255491e1a532","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        tenant_id \u003d \u0027bob\u0027"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id)"},{"line_number":865,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":868,"context_line":"                                         limit\u003d1000)"},{"line_number":869,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":872,"context_line":"                                         limit\u003d1000,"},{"line_number":873,"context_line":"                                         offset\u003d10)"},{"line_number":874,"context_line":"        self.assertEqual([], res)"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        alarm_def_id \u003d self.alarm_compound[\u0027alarm_definition\u0027][\u0027id\u0027]"},{"line_number":877,"context_line":"        query_parms \u003d {\u0027alarm_definition_id\u0027: alarm_def_id}"},{"line_number":878,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":879,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":880,"context_line":"                                         limit\u003d1000)"},{"line_number":881,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.sys_mem\u0027}"},{"line_number":884,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":885,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":886,"context_line":"                                         limit\u003d1000)"},{"line_number":887,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"        query_parms \u003d {\u0027state\u0027: \u0027UNDETERMINED\u0027}"},{"line_number":890,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":891,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":892,"context_line":"                                         limit\u003d1000)"},{"line_number":893,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        time_now \u003d \u00272015-03-15T00:00:00.0Z\u0027"},{"line_number":896,"context_line":"        query_parms \u003d {\u0027state_updated_start_time\u0027: time_now}"},{"line_number":897,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":898,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":899,"context_line":"                                         limit\u003d1000)"},{"line_number":900,"context_line":"        self.assertEqual([{\u0027count\u0027: 1}], res)"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"        query_parms \u003d {\u0027severity\u0027: \u0027LOW\u0027}"},{"line_number":903,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":904,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":905,"context_line":"                                         limit\u003d1000)"},{"line_number":906,"context_line":"        self.assertEqual([{\u0027count\u0027: 3}], res)"},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"        query_parms \u003d {\u0027lifecycle_state\u0027: \u0027OPEN\u0027}"},{"line_number":909,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":910,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":911,"context_line":"                                         limit\u003d1000)"},{"line_number":912,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"        query_parms \u003d {\u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":915,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":916,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":917,"context_line":"                                         limit\u003d1000)"},{"line_number":918,"context_line":"        self.assertEqual([{\u0027count\u0027: 3}], res)"},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"        query_parms \u003d {\u0027metric_dimensions\u0027: {\u0027flavor_id\u0027: \u0027222\u0027}}"},{"line_number":921,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":922,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":923,"context_line":"                                         limit\u003d1000)"},{"line_number":924,"context_line":"        self.assertEqual([{\u0027count\u0027: 2}], res)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027metric_name\u0027]}"},{"line_number":927,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":928,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":929,"context_line":"                                         limit\u003d1000)"},{"line_number":930,"context_line":"        expected \u003d [{\u0027count\u0027: 4, \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027},"},{"line_number":931,"context_line":"                    {\u0027count\u0027: 1, \u0027metric_name\u0027: \u0027cpu.sys_mem\u0027}]"},{"line_number":932,"context_line":"        self.assertEqual(expected, res)"},{"line_number":933,"context_line":""},{"line_number":934,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027dimension_name\u0027]}"},{"line_number":935,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":936,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":937,"context_line":"                                         limit\u003d1000)"},{"line_number":938,"context_line":"        expected \u003d [{\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027extra\u0027},"},{"line_number":939,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_name\u0027: \u0027flavor_id\u0027},"},{"line_number":940,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027hostname\u0027},"},{"line_number":941,"context_line":"                    {\u0027count\u0027: 2, \u0027dimension_name\u0027: \u0027instance_id\u0027},"},{"line_number":942,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_name\u0027: \u0027region\u0027},"},{"line_number":943,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_name\u0027: \u0027service\u0027}]"},{"line_number":944,"context_line":"        self.assertEqual(expected, res)"},{"line_number":945,"context_line":""},{"line_number":946,"context_line":"        query_parms \u003d {\u0027group_by\u0027: [\u0027dimension_value\u0027]}"},{"line_number":947,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":948,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":949,"context_line":"                                         limit\u003d1000)"},{"line_number":950,"context_line":"        expected \u003d [{\u0027count\u0027: 2, \u0027dimension_value\u0027: \u0027123\u0027},"},{"line_number":951,"context_line":"                    {\u0027count\u0027: 2, \u0027dimension_value\u0027: \u0027222\u0027},"},{"line_number":952,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027333\u0027},"},{"line_number":953,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027colorado\u0027},"},{"line_number":954,"context_line":"                    {\u0027count\u0027: 3, \u0027dimension_value\u0027: \u0027monitoring\u0027},"},{"line_number":955,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027roland\u0027},"},{"line_number":956,"context_line":"                    {\u0027count\u0027: 1, \u0027dimension_value\u0027: \u0027vivi\u0027}]"},{"line_number":957,"context_line":"        self.assertEqual(expected, res)"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        query_parms \u003d {\u0027group_by\u0027: []}"},{"line_number":960,"context_line":"        res \u003d self.repo.get_alarms_count(tenant_id\u003dtenant_id,"},{"line_number":961,"context_line":"                                         query_parms\u003dquery_parms,"},{"line_number":962,"context_line":"                                         limit\u003d1000)"},{"line_number":963,"context_line":"        self.assertEqual([{\u0027count\u0027: 4}], res)"},{"line_number":964,"context_line":""},{"line_number":965,"context_line":"    def test_should_sort_and_find(self):"},{"line_number":966,"context_line":"        tenant_id \u003d \u0027bob\u0027"},{"line_number":967,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":968,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id\u0027]}"},{"line_number":969,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":970,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":971,"context_line":"                                   limit\u003d1000)"},{"line_number":972,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":973,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":974,"context_line":"                    self.alarm2,"},{"line_number":975,"context_line":"                    self.alarm_compound,"},{"line_number":976,"context_line":"                    self.alarm3]"},{"line_number":977,"context_line":"        self.assertEqual(expected, res)"},{"line_number":978,"context_line":""},{"line_number":979,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":980,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_definition_id\u0027]}"},{"line_number":981,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":982,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":983,"context_line":"                                   limit\u003d1000)"},{"line_number":984,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":985,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":986,"context_line":"                    self.alarm2,"},{"line_number":987,"context_line":"                    self.alarm3,"},{"line_number":988,"context_line":"                    self.alarm_compound]"},{"line_number":989,"context_line":"        self.assertEqual(expected, res)"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":992,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_definition_name\u0027]}"},{"line_number":993,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":994,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":995,"context_line":"                                   limit\u003d1000)"},{"line_number":996,"context_line":"        expected \u003d [self.alarm_compound,"},{"line_number":997,"context_line":"                    self.alarm1,"},{"line_number":998,"context_line":"                    self.alarm2,"},{"line_number":999,"context_line":"                    self.alarm3]"},{"line_number":1000,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1001,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1004,"context_line":"                       \u0027sort_by\u0027: [\u0027severity\u0027]}"},{"line_number":1005,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1006,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1007,"context_line":"                                   limit\u003d1000)"},{"line_number":1008,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1009,"context_line":"                    self.alarm2,"},{"line_number":1010,"context_line":"                    self.alarm3,"},{"line_number":1011,"context_line":"                    self.alarm_compound]"},{"line_number":1012,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1013,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1016,"context_line":"                       \u0027sort_by\u0027: [\u0027state\u0027]}"},{"line_number":1017,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1018,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1019,"context_line":"                                   limit\u003d1000)"},{"line_number":1020,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1021,"context_line":"                    self.alarm2,"},{"line_number":1022,"context_line":"                    self.alarm_compound,"},{"line_number":1023,"context_line":"                    self.alarm3]"},{"line_number":1024,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1025,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1028,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id asc\u0027]}"},{"line_number":1029,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1030,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1031,"context_line":"                                   limit\u003d1000)"},{"line_number":1032,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1033,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1034,"context_line":"                    self.alarm2,"},{"line_number":1035,"context_line":"                    self.alarm_compound,"},{"line_number":1036,"context_line":"                    self.alarm3]"},{"line_number":1037,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1040,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id desc\u0027]}"},{"line_number":1041,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1042,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1043,"context_line":"                                   limit\u003d1000)"},{"line_number":1044,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1045,"context_line":"        expected \u003d [self.alarm3,"},{"line_number":1046,"context_line":"                    self.alarm_compound,"},{"line_number":1047,"context_line":"                    self.alarm2,"},{"line_number":1048,"context_line":"                    self.alarm1]"},{"line_number":1049,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"        query_parms \u003d {\u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1052,"context_line":"                       \u0027sort_by\u0027: [\u0027alarm_id nfl\u0027]}"},{"line_number":1053,"context_line":"        res \u003d self.repo.get_alarms(tenant_id\u003dtenant_id,"},{"line_number":1054,"context_line":"                                   query_parms\u003dquery_parms,"},{"line_number":1055,"context_line":"                                   limit\u003d1000)"},{"line_number":1056,"context_line":"        res \u003d self.helper_builder_result(res)"},{"line_number":1057,"context_line":"        expected \u003d [self.alarm1,"},{"line_number":1058,"context_line":"                    self.alarm2,"},{"line_number":1059,"context_line":"                    self.alarm_compound,"},{"line_number":1060,"context_line":"                    self.alarm3]"},{"line_number":1061,"context_line":"        self.assertEqual(expected, res)"},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    def test_should_update(self):"},{"line_number":1064,"context_line":"        tenant_id \u003d \u0027bob\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_ffed5e25","line":1061,"range":{"start_line":865,"start_character":25,"end_line":1061,"end_character":38},"in_reply_to":"5fc1f717_3094908b","updated":"2019-03-07 10:44:14.000000000","message":"pleas check https://review.openstack.org/#/c/632718/20/monasca_api/tests/test_a_repository.py@840","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_ad_repository.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027name\u0027: \u002750% CPU\u0027,"},{"line_number":751,"context_line":"                     \u0027ok_actions\u0027: None,"},{"line_number":752,"context_line":"                     \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":753,"context_line":"                     \u0027undetermined_actions\u0027: None}]"},{"line_number":754,"context_line":"        alarmDef1 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":755,"context_line":"                                                    limit\u003d1,"},{"line_number":756,"context_line":"                                                    sort_by\u003d[\u0027id\u0027])"},{"line_number":757,"context_line":"        self.assertEqual(expected, alarmDef1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_9036a4b4","line":754,"range":{"start_line":753,"start_character":51,"end_line":754,"end_character":8},"updated":"2019-03-06 14:27:20.000000000","message":"add one empty line","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                     \u0027name\u0027: \u002750% CPU\u0027,"},{"line_number":751,"context_line":"                     \u0027ok_actions\u0027: None,"},{"line_number":752,"context_line":"                     \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":753,"context_line":"                     \u0027undetermined_actions\u0027: None}]"},{"line_number":754,"context_line":"        alarmDef1 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":755,"context_line":"                                                    limit\u003d1,"},{"line_number":756,"context_line":"                                                    sort_by\u003d[\u0027id\u0027])"},{"line_number":757,"context_line":"        self.assertEqual(expected, alarmDef1)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_c41217b2","line":754,"range":{"start_line":753,"start_character":51,"end_line":754,"end_character":8},"in_reply_to":"5fc1f717_9036a4b4","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        alarmDef1 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":755,"context_line":"                                                    limit\u003d1,"},{"line_number":756,"context_line":"                                                    sort_by\u003d[\u0027id\u0027])"},{"line_number":757,"context_line":"        self.assertEqual(expected, alarmDef1)"},{"line_number":758,"context_line":"        alarmDef2 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":759,"context_line":"                                                    limit\u003d1,"},{"line_number":760,"context_line":"                                                    sort_by\u003d[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_900464c8","line":757,"range":{"start_line":757,"start_character":25,"end_line":757,"end_character":44},"updated":"2019-03-06 14:27:20.000000000","message":"you have limit\u003d1 so why it\u0027s not failing?, also change order to have expected as last","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":754,"context_line":"        alarmDef1 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":755,"context_line":"                                                    limit\u003d1,"},{"line_number":756,"context_line":"                                                    sort_by\u003d[\u0027id\u0027])"},{"line_number":757,"context_line":"        self.assertEqual(expected, alarmDef1)"},{"line_number":758,"context_line":"        alarmDef2 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":759,"context_line":"                                                    limit\u003d1,"},{"line_number":760,"context_line":"                                                    sort_by\u003d[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_a4210ba2","line":757,"range":{"start_line":757,"start_character":25,"end_line":757,"end_character":44},"in_reply_to":"5fc1f717_900464c8","updated":"2019-03-07 10:16:57.000000000","message":"To be honest limit in this place is unnecessary/ \nIn this case indexing starting from 0, probably this is bug.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":758,"context_line":"        alarmDef2 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":759,"context_line":"                                                    limit\u003d1,"},{"line_number":760,"context_line":"                                                    sort_by\u003d[\u0027name\u0027])"},{"line_number":761,"context_line":"        self.assertEqual(expected[::-1], alarmDef2)"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"    def test_should_delete_by_id(self):"},{"line_number":764,"context_line":"        self.repo.delete_alarm_definition(\u0027bob\u0027, \u0027123\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_f017e8ec","line":761,"range":{"start_line":761,"start_character":25,"end_line":761,"end_character":39},"updated":"2019-03-06 14:27:20.000000000","message":"you are not testing decreasing order so use positional here expected[1], move expected to the end","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":758,"context_line":"        alarmDef2 \u003d self.repo.get_alarm_definitions(tenant_id\u003d\u0027bob\u0027,"},{"line_number":759,"context_line":"                                                    limit\u003d1,"},{"line_number":760,"context_line":"                                                    sort_by\u003d[\u0027name\u0027])"},{"line_number":761,"context_line":"        self.assertEqual(expected[::-1], alarmDef2)"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"    def test_should_delete_by_id(self):"},{"line_number":764,"context_line":"        self.repo.delete_alarm_definition(\u0027bob\u0027, \u0027123\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_e475d399","line":761,"range":{"start_line":761,"start_character":25,"end_line":761,"end_character":39},"in_reply_to":"5fc1f717_f017e8ec","updated":"2019-03-07 10:16:57.000000000","message":"This revert order of list , in this case is necessary to revert list.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        self.assertEqual(alarmDef1, expected)"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def test_try_delete_alarm_that_does_not_exist(self):"},{"line_number":789,"context_line":"        response \u003d self.repo.delete_alarm_definition(\u0027goku\u0027, \u0027123\u0027)"},{"line_number":790,"context_line":"        self.assertEqual(False, response)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    def test_should_patch_name(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_50b59ced","line":789,"range":{"start_line":789,"start_character":54,"end_line":789,"end_character":58},"updated":"2019-03-06 14:27:20.000000000","message":"+2","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":786,"context_line":"        self.assertEqual(alarmDef1, expected)"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def test_try_delete_alarm_that_does_not_exist(self):"},{"line_number":789,"context_line":"        response \u003d self.repo.delete_alarm_definition(\u0027goku\u0027, \u0027123\u0027)"},{"line_number":790,"context_line":"        self.assertEqual(False, response)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    def test_should_patch_name(self):"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_a46fcbc3","line":789,"range":{"start_line":789,"start_character":54,"end_line":789,"end_character":58},"in_reply_to":"5fc1f717_50b59ced","updated":"2019-03-07 10:16:57.000000000","message":": )","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def test_try_delete_alarm_that_does_not_exist(self):"},{"line_number":789,"context_line":"        response \u003d self.repo.delete_alarm_definition(\u0027goku\u0027, \u0027123\u0027)"},{"line_number":790,"context_line":"        self.assertEqual(False, response)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    def test_should_patch_name(self):"},{"line_number":793,"context_line":"        self.run_patch_test(name\u003du\u002790% CPU New\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_d0c8ac75","line":790,"range":{"start_line":790,"start_character":25,"end_line":790,"end_character":40},"updated":"2019-03-06 14:27:20.000000000","message":"Move expected value to the end.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"8827cd1b4da3db2954438061de80255491e1a532","unresolved":false,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"    def test_try_delete_alarm_that_does_not_exist(self):"},{"line_number":789,"context_line":"        response \u003d self.repo.delete_alarm_definition(\u0027goku\u0027, \u0027123\u0027)"},{"line_number":790,"context_line":"        self.assertEqual(False, response)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    def test_should_patch_name(self):"},{"line_number":793,"context_line":"        self.run_patch_test(name\u003du\u002790% CPU New\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_5fdcb273","line":790,"range":{"start_line":790,"start_character":25,"end_line":790,"end_character":40},"in_reply_to":"5fc1f717_d0c8ac75","updated":"2019-03-07 10:44:14.000000000","message":"pleas check https://review.openstack.org/#/c/632718/20/monasca_api/tests/test_a_repository.py@840","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_alarms.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":986,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"    def test_alarms_patch_without_new_fileds(self):"},{"line_number":989,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":990,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":991,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_7004587c","line":988,"range":{"start_line":988,"start_character":38,"end_line":988,"end_character":44},"updated":"2019-03-06 14:27:20.000000000","message":"fileds?","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":986,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"    def test_alarms_patch_without_new_fileds(self):"},{"line_number":989,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":990,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":991,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_6427a314","line":988,"range":{"start_line":988,"start_character":38,"end_line":988,"end_character":44},"in_reply_to":"5fc1f717_7004587c","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test_alarm_state_history_no_alarm_id(self):"},{"line_number":202,"context_line":"        expected_elements \u003d {u\"elements\": []}"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        response \u003d self.simulate_request("},{"line_number":205,"context_line":"            u\u0027/v2.0/alarms/state-history/\u0027,"},{"line_number":206,"context_line":"            headers\u003d{"},{"line_number":207,"context_line":"                \u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":208,"context_line":"                \u0027X-Tenant-Id\u0027: TENANT_ID,"},{"line_number":209,"context_line":"            })"},{"line_number":210,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":211,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"class TestAlarmsCount(AlarmTestBase):"},{"line_number":215,"context_line":"    def setUp(self):"},{"line_number":216,"context_line":"        super(TestAlarmsCount, self).setUp()"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        self.alarms_get_alarms_count_mock \u003d self.useFixture(fixtures.MockPatch("},{"line_number":219,"context_line":"            \u0027monasca_api.common.repositories.sqla.alarms_repository.AlarmsRepository\u0027"},{"line_number":220,"context_line":"        )).mock"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.alarms_count_resource \u003d alarms.AlarmsCount()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.api.add_route(\u0027/v2.0/alarms/count\u0027,"},{"line_number":225,"context_line":"                           self.alarms_count_resource)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_get_alarm_count(self):"},{"line_number":228,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":229,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":234,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":235,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":236,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":237,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":240,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_get_alarm_count_state_parameter(self):"},{"line_number":243,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":244,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":249,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":250,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":251,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":252,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":253,"context_line":"                                         query_string\u003d\u0027state\u003dOK\u0027)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":256,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def test_get_alarm_count_severity_parameter(self):"},{"line_number":259,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":260,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":265,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":266,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":267,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":268,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":269,"context_line":"                                         query_string\u003d\u0027severity\u003dLOW\u0027)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":272,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def test_get_alarm_count_group_by_parameter(self):"},{"line_number":275,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":276,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027],"},{"line_number":277,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027],"},{"line_number":278,"context_line":"                                        [1, \u0027cpu.sys_mem\u0027]]}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2},"},{"line_number":281,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027, \u0027count\u0027: 1}]"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":284,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":285,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":286,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":287,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":288,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":291,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027, \u0027dimension_name\u0027],"},{"line_number":294,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027, \u0027hostname\u0027],"},{"line_number":295,"context_line":"                                        [1, \u0027cpu.sys_mem\u0027, \u0027hostname\u0027]]}"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":298,"context_line":"                                                       \u0027dimension_name\u0027: \u0027hostname\u0027,"},{"line_number":299,"context_line":"                                                       \u0027count\u0027: 2},"},{"line_number":300,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027,"},{"line_number":301,"context_line":"                                                       \u0027dimension_name\u0027: \u0027hostname\u0027,"},{"line_number":302,"context_line":"                                                       \u0027count\u0027: 1}]"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":305,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":306,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":307,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":308,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":309,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name,dimension_name\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":312,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_get_alarm_count_incorrect_group_by_parameter(self):"},{"line_number":315,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2},"},{"line_number":318,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027, \u0027count\u0027: 1}]"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":321,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":322,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":323,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":324,"context_line":"                              query_string\u003d\u0027group_by\u003dhahahah\u0027)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def test_get_alarm_count_offset(self):"},{"line_number":329,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":330,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027],"},{"line_number":331,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027]]}"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2}]"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":336,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":337,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":338,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":339,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":340,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0026offset\u003d1\u0027)"},{"line_number":341,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":342,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def test_get_alarm_count_incorrect_offset(self):"},{"line_number":345,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":346,"context_line":"        expected_elements \u003d {\u0027description\u0027: \u0027Offset must be a valid integer, was hahahah\u0027,"},{"line_number":347,"context_line":"                             \u0027title\u0027: \u0027Unprocessable Entity\u0027}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2}]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":352,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":353,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":354,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":355,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":356,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0026offset\u003dhahahah\u0027)"},{"line_number":357,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":358,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def test_get_alarm_count_limit_parameter(self):"},{"line_number":361,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":362,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":367,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":368,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":369,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":370,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":371,"context_line":"                                         query_string\u003d\u0027limit\u003d1\u0027)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":374,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":377,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":380,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":381,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":382,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":383,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":384,"context_line":"                                         query_string\u003d\u0027limit\u003d0\u0027)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":387,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_get_alarm_count_when_count_is_zero(self):"},{"line_number":390,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":391,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027], \u0027counts\u0027: [[0, None]]}"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 0}]"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":396,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":397,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":398,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":399,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":400,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0027)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":403,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027], \u0027counts\u0027: [[0]]}"},{"line_number":406,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":407,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":408,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":409,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":410,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":413,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"class TestAlarms(AlarmTestBase):"},{"line_number":417,"context_line":"    def setUp(self):"},{"line_number":418,"context_line":"        super(TestAlarms, self).setUp()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        self.alarms_repo_mock \u003d self.useFixture(fixtures.MockPatch("},{"line_number":421,"context_line":"            \u0027monasca_api.common.repositories.sqla.alarms_repository.AlarmsRepository\u0027"},{"line_number":422,"context_line":"        )).mock"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        self.alarms_resource \u003d alarms.Alarms()"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        self.api.add_route(\u0027/v2.0/alarms\u0027,"},{"line_number":427,"context_line":"                           self.alarms_resource)"},{"line_number":428,"context_line":"        self.api.add_route(\u0027/v2.0/alarms/{alarm_id}\u0027,"},{"line_number":429,"context_line":"                           self.alarms_resource)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def test_alarms_get_alarms(self):"},{"line_number":432,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":433,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":434,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":435,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":436,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":437,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":438,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":439,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":440,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":441,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":442,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":443,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":444,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":445,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        expected_alarms \u003d {"},{"line_number":448,"context_line":"            \u0027elements\u0027: [{"},{"line_number":449,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":450,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":451,"context_line":"                    \u0027links\u0027: [{"},{"line_number":452,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":453,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":454,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":455,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":456,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":457,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":458,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":459,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":460,"context_line":"                \u0027links\u0027: [{"},{"line_number":461,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":462,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":463,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":464,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":465,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":466,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":467,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":468,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":469,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":470,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":473,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":474,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":475,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":476,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":479,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_alarms_get_alarm(self):"},{"line_number":482,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":483,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":484,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":485,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":486,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":487,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":488,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":489,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":490,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":491,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":492,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":493,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":494,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":495,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        expected_alarms \u003d {\u0027alarm_definition\u0027: {"},{"line_number":498,"context_line":"            \u0027id\u0027: \u00271\u0027,"},{"line_number":499,"context_line":"            \u0027links\u0027: [{"},{"line_number":500,"context_line":"                \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":501,"context_line":"                \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":502,"context_line":"            \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":503,"context_line":"            \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":504,"context_line":"            \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":505,"context_line":"            \u0027id\u0027: \u00271\u0027,"},{"line_number":506,"context_line":"            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":507,"context_line":"            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":508,"context_line":"            \u0027links\u0027: [{"},{"line_number":509,"context_line":"                \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":510,"context_line":"                \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":511,"context_line":"            \u0027metrics\u0027: [{"},{"line_number":512,"context_line":"                \u0027dimensions\u0027: {"},{"line_number":513,"context_line":"                    \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":514,"context_line":"                    \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":515,"context_line":"                \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":516,"context_line":"            \u0027state\u0027: \u0027OK\u0027,"},{"line_number":517,"context_line":"            \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":518,"context_line":"            \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/1\u0027,"},{"line_number":521,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":522,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":523,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":524,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":527,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def test_alarms_get_alarms_state_parameter(self):"},{"line_number":530,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":531,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":532,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":533,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":534,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":535,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":536,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":537,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":538,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":539,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":540,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":541,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":542,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":543,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        expected_alarms \u003d {"},{"line_number":546,"context_line":"            \u0027elements\u0027: [{"},{"line_number":547,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":548,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":549,"context_line":"                    \u0027links\u0027: [{"},{"line_number":550,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":551,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":552,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":553,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":554,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":555,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":556,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":557,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":558,"context_line":"                \u0027links\u0027: [{"},{"line_number":559,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":560,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":561,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":562,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":563,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":564,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":565,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":566,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":567,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":568,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":569,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":570,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":571,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":572,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":573,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":574,"context_line":"                                         query_string\u003d\u0027state\u003dOK\u0027)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":577,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"    def test_alarms_get_alarms_severity_parameter(self):"},{"line_number":580,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":581,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":582,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":583,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":584,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":585,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":586,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":587,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":588,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":589,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":590,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":591,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":592,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":593,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        expected_alarms \u003d {"},{"line_number":596,"context_line":"            \u0027elements\u0027: [{"},{"line_number":597,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":598,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":599,"context_line":"                    \u0027links\u0027: [{"},{"line_number":600,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":601,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":602,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":603,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":604,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":605,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":606,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":607,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":608,"context_line":"                \u0027links\u0027: [{"},{"line_number":609,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":610,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":611,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":612,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":613,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":614,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":615,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":616,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":617,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":618,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":619,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":620,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":621,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":622,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":623,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":624,"context_line":"                                         query_string\u003d\u0027severity\u003dLOW\u0027)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":627,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def test_alarms_get_alarms_with_offset(self):"},{"line_number":630,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":631,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":632,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":633,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":634,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":635,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":636,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":637,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":638,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":639,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":640,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":641,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":642,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":643,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        expected_alarms \u003d {"},{"line_number":646,"context_line":"            \u0027elements\u0027: [{"},{"line_number":647,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":648,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":649,"context_line":"                    \u0027links\u0027: [{"},{"line_number":650,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":651,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":652,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":653,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":654,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":655,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":656,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":657,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":658,"context_line":"                \u0027links\u0027: [{"},{"line_number":659,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":660,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":661,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":662,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":663,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":664,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":665,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":666,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":667,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":668,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":669,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":670,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":671,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":672,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":673,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":674,"context_line":"                                         query_string\u003d\u0027offset\u003d1\u0027)"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":677,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def test_alarms_get_alarms_with_incorrect_offset(self):"},{"line_number":680,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":681,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":682,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":683,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":684,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":685,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":686,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":687,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":688,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":689,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":690,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":691,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":692,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":693,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":696,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":697,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":698,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":699,"context_line":"                              query_string\u003d\u0027offset\u003dninccorect_offset\u0027)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def test_alarms_get_alarms_sort_by_parameter(self):"},{"line_number":704,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":705,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":706,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":707,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":708,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":709,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":710,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":711,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":712,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":713,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":714,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":715,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":716,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":717,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        expected_alarms \u003d {"},{"line_number":720,"context_line":"            \u0027elements\u0027: [{"},{"line_number":721,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":722,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":723,"context_line":"                    \u0027links\u0027: [{"},{"line_number":724,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":725,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":726,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":727,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":728,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":729,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":730,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":731,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":732,"context_line":"                \u0027links\u0027: [{"},{"line_number":733,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":734,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":735,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":736,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":737,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":738,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":739,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":740,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":741,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":742,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":743,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":744,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":745,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":746,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":747,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":748,"context_line":"                                         query_string\u003d\u0027sort_by\u003dalarm_id\u0027)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":751,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def test_alarms_get_alarms_incorrect_sort_by_parameter(self):"},{"line_number":754,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":755,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":756,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":757,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":758,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":759,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":760,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":761,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":762,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":763,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":764,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":765,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":766,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":767,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"        self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":770,"context_line":"                              headers\u003d{\u0027X-Roles\u0027:"},{"line_number":771,"context_line":"                                       CONF.security.default_authorized_roles[0],"},{"line_number":772,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":773,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":774,"context_line":"                              query_string\u003d\u0027sort_by\u003drandom_string\u0027)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def test_alarms_delete_alarms(self):"},{"line_number":779,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":780,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":781,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":782,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":783,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":784,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":785,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":786,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":787,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":788,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":791,"context_line":"                              headers\u003d{\u0027X-Roles\u0027:"},{"line_number":792,"context_line":"                                       CONF.security.default_authorized_roles[0],"},{"line_number":793,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":794,"context_line":"                              method\u003d\u0027DELETE\u0027)"},{"line_number":795,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_204)"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    def test_alarms_put(self):"},{"line_number":798,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":799,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":800,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":801,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":802,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":803,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":804,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":805,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":806,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":807,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":808,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":809,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":810,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":811,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":812,"context_line":"             1550835096962)"},{"line_number":813,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":814,"context_line":"            {\u0027description\u0027: None,"},{"line_number":815,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":816,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":817,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":818,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":819,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":820,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":821,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":822,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":823,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":824,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":825,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":826,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":827,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":828,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":829,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":830,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":831,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":832,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":833,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":834,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":835,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":836,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":837,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":838,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":839,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":840,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":843,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":844,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":845,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":846,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":847,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":848,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":849,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":850,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":851,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":852,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":853,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":854,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":855,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":856,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":857,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":858,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":861,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":862,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":863,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":864,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":865,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":868,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"    def test_alarms_put_without_link(self):"},{"line_number":871,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":872,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027}"},{"line_number":873,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027link\u0027 is required\","},{"line_number":874,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":875,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":876,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":877,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":878,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":879,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":880,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":883,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def test_alarms_put_without_lifecycle_state(self):"},{"line_number":886,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":887,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":888,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027lifecycle_state\u0027 is required\","},{"line_number":889,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":890,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":891,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":892,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":893,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":894,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":895,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":898,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_alarms_put_without_state(self):"},{"line_number":901,"context_line":"        alarm_new_fields \u003d {\u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":902,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":903,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027state\u0027 is required\","},{"line_number":904,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":905,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":906,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":907,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":908,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":909,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":910,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":911,"context_line":""},{"line_number":912,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":913,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"    def test_alarms_patch(self):"},{"line_number":916,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":917,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":918,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":919,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":920,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":921,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":922,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":923,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":924,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":925,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":926,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":927,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":928,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":929,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":930,"context_line":"             1550835096962)"},{"line_number":931,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":932,"context_line":"            {\u0027description\u0027: None,"},{"line_number":933,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":934,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":935,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":936,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":937,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":938,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":939,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":940,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":941,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":942,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":943,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":944,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":945,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":946,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":947,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":948,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":949,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":950,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":951,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":952,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":953,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":954,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":955,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":956,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":957,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":958,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":961,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":962,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":963,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":964,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":965,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":966,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":967,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":968,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":969,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":970,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":971,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":972,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":973,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":974,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":975,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":976,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":979,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":980,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":981,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":982,"context_line":"                                         method\u003d\u0027PATCH\u0027,"},{"line_number":983,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":986,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"    def test_alarms_patch_without_new_fileds(self):"},{"line_number":989,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":990,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":991,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":992,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":993,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":994,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":995,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":996,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":997,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":998,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":999,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":1000,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":1001,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1002,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":1003,"context_line":"             1550835096962)"},{"line_number":1004,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":1005,"context_line":"            {\u0027description\u0027: None,"},{"line_number":1006,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":1007,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1008,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":1009,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":1010,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":1011,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":1012,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":1013,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":1014,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":1015,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":1016,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":1017,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":1018,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":1019,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":1020,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":1021,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1022,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1023,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1024,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":1025,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1026,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1027,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":1028,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":1029,"context_line":"        alarm_new_fields \u003d {}"},{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":1032,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":1033,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":1034,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":1035,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":1036,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":1037,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":1038,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":1039,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":1040,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":1041,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1042,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":1043,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":1044,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":1045,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":1046,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":1047,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":1050,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":1051,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":1052,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":1053,"context_line":"                                         method\u003d\u0027PATCH\u0027,"},{"line_number":1054,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_50b11ce1","line":1053,"range":{"start_line":202,"start_character":30,"end_line":1053,"end_character":55},"updated":"2019-03-06 14:27:20.000000000","message":"Allow me to complain that you are mixing `\"` with `\u0027` all the time.","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def test_alarm_state_history_no_alarm_id(self):"},{"line_number":202,"context_line":"        expected_elements \u003d {u\"elements\": []}"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        response \u003d self.simulate_request("},{"line_number":205,"context_line":"            u\u0027/v2.0/alarms/state-history/\u0027,"},{"line_number":206,"context_line":"            headers\u003d{"},{"line_number":207,"context_line":"                \u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":208,"context_line":"                \u0027X-Tenant-Id\u0027: TENANT_ID,"},{"line_number":209,"context_line":"            })"},{"line_number":210,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":211,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"class TestAlarmsCount(AlarmTestBase):"},{"line_number":215,"context_line":"    def setUp(self):"},{"line_number":216,"context_line":"        super(TestAlarmsCount, self).setUp()"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        self.alarms_get_alarms_count_mock \u003d self.useFixture(fixtures.MockPatch("},{"line_number":219,"context_line":"            \u0027monasca_api.common.repositories.sqla.alarms_repository.AlarmsRepository\u0027"},{"line_number":220,"context_line":"        )).mock"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        self.alarms_count_resource \u003d alarms.AlarmsCount()"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.api.add_route(\u0027/v2.0/alarms/count\u0027,"},{"line_number":225,"context_line":"                           self.alarms_count_resource)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_get_alarm_count(self):"},{"line_number":228,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":229,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":234,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":235,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":236,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":237,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":240,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def test_get_alarm_count_state_parameter(self):"},{"line_number":243,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":244,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":249,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":250,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":251,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":252,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":253,"context_line":"                                         query_string\u003d\u0027state\u003dOK\u0027)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":256,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def test_get_alarm_count_severity_parameter(self):"},{"line_number":259,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":260,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":265,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":266,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":267,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":268,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":269,"context_line":"                                         query_string\u003d\u0027severity\u003dLOW\u0027)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":272,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def test_get_alarm_count_group_by_parameter(self):"},{"line_number":275,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":276,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027],"},{"line_number":277,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027],"},{"line_number":278,"context_line":"                                        [1, \u0027cpu.sys_mem\u0027]]}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2},"},{"line_number":281,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027, \u0027count\u0027: 1}]"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":284,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":285,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":286,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":287,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":288,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":291,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027, \u0027dimension_name\u0027],"},{"line_number":294,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027, \u0027hostname\u0027],"},{"line_number":295,"context_line":"                                        [1, \u0027cpu.sys_mem\u0027, \u0027hostname\u0027]]}"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":298,"context_line":"                                                       \u0027dimension_name\u0027: \u0027hostname\u0027,"},{"line_number":299,"context_line":"                                                       \u0027count\u0027: 2},"},{"line_number":300,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027,"},{"line_number":301,"context_line":"                                                       \u0027dimension_name\u0027: \u0027hostname\u0027,"},{"line_number":302,"context_line":"                                                       \u0027count\u0027: 1}]"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":305,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":306,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":307,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":308,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":309,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name,dimension_name\u0027)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":312,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_get_alarm_count_incorrect_group_by_parameter(self):"},{"line_number":315,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2},"},{"line_number":318,"context_line":"                                                      {\u0027metric_name\u0027: u\u0027cpu.sys_mem\u0027, \u0027count\u0027: 1}]"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":321,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":322,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":323,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":324,"context_line":"                              query_string\u003d\u0027group_by\u003dhahahah\u0027)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def test_get_alarm_count_offset(self):"},{"line_number":329,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":330,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027],"},{"line_number":331,"context_line":"                             \u0027counts\u0027: [[2, \u0027cpu.idle_perc\u0027]]}"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2}]"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":336,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":337,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":338,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":339,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":340,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0026offset\u003d1\u0027)"},{"line_number":341,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":342,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    def test_get_alarm_count_incorrect_offset(self):"},{"line_number":345,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":346,"context_line":"        expected_elements \u003d {\u0027description\u0027: \u0027Offset must be a valid integer, was hahahah\u0027,"},{"line_number":347,"context_line":"                             \u0027title\u0027: \u0027Unprocessable Entity\u0027}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027metric_name\u0027: u\u0027cpu.idle_perc\u0027, \u0027count\u0027: 2}]"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":352,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":353,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":354,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":355,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":356,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0026offset\u003dhahahah\u0027)"},{"line_number":357,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":358,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def test_get_alarm_count_limit_parameter(self):"},{"line_number":361,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":362,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [[4]], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":367,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":368,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":369,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":370,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":371,"context_line":"                                         query_string\u003d\u0027limit\u003d1\u0027)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":374,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 4}]"},{"line_number":377,"context_line":"        expected_elements \u003d {\u0027counts\u0027: [], \u0027columns\u0027: [\u0027count\u0027]}"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":380,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":381,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":382,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":383,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":384,"context_line":"                                         query_string\u003d\u0027limit\u003d0\u0027)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":387,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    def test_get_alarm_count_when_count_is_zero(self):"},{"line_number":390,"context_line":"        return_value \u003d self.alarms_get_alarms_count_mock.return_value"},{"line_number":391,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027, \u0027metric_name\u0027], \u0027counts\u0027: [[0, None]]}"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"        return_value.get_alarms_count.return_value \u003d [{\u0027count\u0027: 0}]"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":396,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":397,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":398,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":399,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":400,"context_line":"                                         query_string\u003d\u0027group_by\u003dmetric_name\u0027)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":403,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        expected_elements \u003d {\u0027columns\u0027: [\u0027count\u0027], \u0027counts\u0027: [[0]]}"},{"line_number":406,"context_line":"        response \u003d self.simulate_request(\"/v2.0/alarms/count\","},{"line_number":407,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":408,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":409,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":410,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":413,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_elements))"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"class TestAlarms(AlarmTestBase):"},{"line_number":417,"context_line":"    def setUp(self):"},{"line_number":418,"context_line":"        super(TestAlarms, self).setUp()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        self.alarms_repo_mock \u003d self.useFixture(fixtures.MockPatch("},{"line_number":421,"context_line":"            \u0027monasca_api.common.repositories.sqla.alarms_repository.AlarmsRepository\u0027"},{"line_number":422,"context_line":"        )).mock"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        self.alarms_resource \u003d alarms.Alarms()"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"        self.api.add_route(\u0027/v2.0/alarms\u0027,"},{"line_number":427,"context_line":"                           self.alarms_resource)"},{"line_number":428,"context_line":"        self.api.add_route(\u0027/v2.0/alarms/{alarm_id}\u0027,"},{"line_number":429,"context_line":"                           self.alarms_resource)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def test_alarms_get_alarms(self):"},{"line_number":432,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":433,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":434,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":435,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":436,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":437,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":438,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":439,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":440,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":441,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":442,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":443,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":444,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":445,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        expected_alarms \u003d {"},{"line_number":448,"context_line":"            \u0027elements\u0027: [{"},{"line_number":449,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":450,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":451,"context_line":"                    \u0027links\u0027: [{"},{"line_number":452,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":453,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":454,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":455,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":456,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":457,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":458,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":459,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":460,"context_line":"                \u0027links\u0027: [{"},{"line_number":461,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":462,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":463,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":464,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":465,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":466,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":467,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":468,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":469,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":470,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":473,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":474,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":475,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":476,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":479,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_alarms_get_alarm(self):"},{"line_number":482,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":483,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":484,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":485,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":486,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":487,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":488,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":489,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":490,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":491,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":492,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":493,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":494,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":495,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        expected_alarms \u003d {\u0027alarm_definition\u0027: {"},{"line_number":498,"context_line":"            \u0027id\u0027: \u00271\u0027,"},{"line_number":499,"context_line":"            \u0027links\u0027: [{"},{"line_number":500,"context_line":"                \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":501,"context_line":"                \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":502,"context_line":"            \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":503,"context_line":"            \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":504,"context_line":"            \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":505,"context_line":"            \u0027id\u0027: \u00271\u0027,"},{"line_number":506,"context_line":"            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":507,"context_line":"            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":508,"context_line":"            \u0027links\u0027: [{"},{"line_number":509,"context_line":"                \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":510,"context_line":"                \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":511,"context_line":"            \u0027metrics\u0027: [{"},{"line_number":512,"context_line":"                \u0027dimensions\u0027: {"},{"line_number":513,"context_line":"                    \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":514,"context_line":"                    \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":515,"context_line":"                \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":516,"context_line":"            \u0027state\u0027: \u0027OK\u0027,"},{"line_number":517,"context_line":"            \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":518,"context_line":"            \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/1\u0027,"},{"line_number":521,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":522,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":523,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":524,"context_line":"                                         method\u003d\u0027GET\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":527,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    def test_alarms_get_alarms_state_parameter(self):"},{"line_number":530,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":531,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":532,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":533,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":534,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":535,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":536,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":537,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":538,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":539,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":540,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":541,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":542,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":543,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"        expected_alarms \u003d {"},{"line_number":546,"context_line":"            \u0027elements\u0027: [{"},{"line_number":547,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":548,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":549,"context_line":"                    \u0027links\u0027: [{"},{"line_number":550,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":551,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":552,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":553,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":554,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":555,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":556,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":557,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":558,"context_line":"                \u0027links\u0027: [{"},{"line_number":559,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":560,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":561,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":562,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":563,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":564,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":565,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":566,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":567,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":568,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":569,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":570,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":571,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":572,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":573,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":574,"context_line":"                                         query_string\u003d\u0027state\u003dOK\u0027)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":577,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"    def test_alarms_get_alarms_severity_parameter(self):"},{"line_number":580,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":581,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":582,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":583,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":584,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":585,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":586,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":587,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":588,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":589,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":590,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":591,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":592,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":593,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        expected_alarms \u003d {"},{"line_number":596,"context_line":"            \u0027elements\u0027: [{"},{"line_number":597,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":598,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":599,"context_line":"                    \u0027links\u0027: [{"},{"line_number":600,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":601,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":602,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":603,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":604,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":605,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":606,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":607,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":608,"context_line":"                \u0027links\u0027: [{"},{"line_number":609,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":610,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":611,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":612,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":613,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":614,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":615,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":616,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":617,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":618,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":619,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":620,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":621,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":622,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":623,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":624,"context_line":"                                         query_string\u003d\u0027severity\u003dLOW\u0027)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":627,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def test_alarms_get_alarms_with_offset(self):"},{"line_number":630,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":631,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":632,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":633,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":634,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":635,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":636,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":637,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":638,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":639,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":640,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":641,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":642,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":643,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        expected_alarms \u003d {"},{"line_number":646,"context_line":"            \u0027elements\u0027: [{"},{"line_number":647,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":648,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":649,"context_line":"                    \u0027links\u0027: [{"},{"line_number":650,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":651,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":652,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":653,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":654,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":655,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":656,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":657,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":658,"context_line":"                \u0027links\u0027: [{"},{"line_number":659,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":660,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":661,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":662,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":663,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":664,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":665,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":666,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":667,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":668,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":669,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":670,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":671,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":672,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":673,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":674,"context_line":"                                         query_string\u003d\u0027offset\u003d1\u0027)"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":677,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"    def test_alarms_get_alarms_with_incorrect_offset(self):"},{"line_number":680,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":681,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":682,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":683,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":684,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":685,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":686,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":687,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":688,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":689,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":690,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":691,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":692,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":693,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":696,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":697,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":698,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":699,"context_line":"                              query_string\u003d\u0027offset\u003dninccorect_offset\u0027)"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    def test_alarms_get_alarms_sort_by_parameter(self):"},{"line_number":704,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":705,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":706,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":707,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":708,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":709,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":710,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":711,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":712,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":713,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":714,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":715,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":716,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":717,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        expected_alarms \u003d {"},{"line_number":720,"context_line":"            \u0027elements\u0027: [{"},{"line_number":721,"context_line":"                \u0027alarm_definition\u0027: {"},{"line_number":722,"context_line":"                    \u0027id\u0027: \u00271\u0027,"},{"line_number":723,"context_line":"                    \u0027links\u0027: [{"},{"line_number":724,"context_line":"                        \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarm-definitions/1\u0027,"},{"line_number":725,"context_line":"                        \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":726,"context_line":"                    \u0027name\u0027: \u002790% CPU\u0027,"},{"line_number":727,"context_line":"                    \u0027severity\u0027: \u0027LOW\u0027},"},{"line_number":728,"context_line":"                \u0027created_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":729,"context_line":"                \u0027id\u0027: \u00271\u0027,"},{"line_number":730,"context_line":"                \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":731,"context_line":"                \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":732,"context_line":"                \u0027links\u0027: [{"},{"line_number":733,"context_line":"                    \u0027href\u0027: \u0027http://falconframework.org/v2.0/alarms/1\u0027,"},{"line_number":734,"context_line":"                    \u0027rel\u0027: \u0027self\u0027}],"},{"line_number":735,"context_line":"                \u0027metrics\u0027: [{"},{"line_number":736,"context_line":"                    \u0027dimensions\u0027: {"},{"line_number":737,"context_line":"                        \u0027instance_id\u0027: \u0027123\u0027,"},{"line_number":738,"context_line":"                        \u0027service\u0027: \u0027monitoring\u0027},"},{"line_number":739,"context_line":"                    \u0027name\u0027: \u0027cpu.idle_perc\u0027}],"},{"line_number":740,"context_line":"                \u0027state\u0027: \u0027OK\u0027,"},{"line_number":741,"context_line":"                \u0027state_updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027,"},{"line_number":742,"context_line":"                \u0027updated_timestamp\u0027: \u00272015-03-14T09:26:53Z\u0027}]}"},{"line_number":743,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":744,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":745,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":746,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":747,"context_line":"                                         method\u003d\u0027GET\u0027,"},{"line_number":748,"context_line":"                                         query_string\u003d\u0027sort_by\u003dalarm_id\u0027)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":751,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarms))"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"    def test_alarms_get_alarms_incorrect_sort_by_parameter(self):"},{"line_number":754,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":755,"context_line":"        return_value.get_alarms.return_value \u003d \\"},{"line_number":756,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":757,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":758,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":759,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":760,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":761,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":762,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":763,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":764,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":765,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2015, 3, 14, 9, 26, 53),"},{"line_number":766,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":767,"context_line":"              \u0027lifecycle_state\u0027: \u0027OPEN\u0027}]"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"        self.simulate_request(\u0027/v2.0/alarms\u0027,"},{"line_number":770,"context_line":"                              headers\u003d{\u0027X-Roles\u0027:"},{"line_number":771,"context_line":"                                       CONF.security.default_authorized_roles[0],"},{"line_number":772,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":773,"context_line":"                              method\u003d\u0027GET\u0027,"},{"line_number":774,"context_line":"                              query_string\u003d\u0027sort_by\u003drandom_string\u0027)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"    def test_alarms_delete_alarms(self):"},{"line_number":779,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":780,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":781,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":782,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":783,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":784,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":785,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":786,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":787,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":788,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":791,"context_line":"                              headers\u003d{\u0027X-Roles\u0027:"},{"line_number":792,"context_line":"                                       CONF.security.default_authorized_roles[0],"},{"line_number":793,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":794,"context_line":"                              method\u003d\u0027DELETE\u0027)"},{"line_number":795,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_204)"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    def test_alarms_put(self):"},{"line_number":798,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":799,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":800,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":801,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":802,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":803,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":804,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":805,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":806,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":807,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":808,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":809,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":810,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":811,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":812,"context_line":"             1550835096962)"},{"line_number":813,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":814,"context_line":"            {\u0027description\u0027: None,"},{"line_number":815,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":816,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":817,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":818,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":819,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":820,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":821,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":822,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":823,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":824,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":825,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":826,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":827,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":828,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":829,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":830,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":831,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":832,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":833,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":834,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":835,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":836,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":837,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":838,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":839,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":840,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":841,"context_line":""},{"line_number":842,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":843,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":844,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":845,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":846,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":847,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":848,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":849,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":850,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":851,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":852,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":853,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":854,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":855,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":856,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":857,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":858,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":861,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":862,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":863,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":864,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":865,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":868,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"    def test_alarms_put_without_link(self):"},{"line_number":871,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":872,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027}"},{"line_number":873,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027link\u0027 is required\","},{"line_number":874,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":875,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":876,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":877,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":878,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":879,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":880,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":881,"context_line":""},{"line_number":882,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":883,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def test_alarms_put_without_lifecycle_state(self):"},{"line_number":886,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":887,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":888,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027lifecycle_state\u0027 is required\","},{"line_number":889,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":890,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":891,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":892,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":893,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":894,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":895,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":898,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_alarms_put_without_state(self):"},{"line_number":901,"context_line":"        alarm_new_fields \u003d {\u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":902,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":903,"context_line":"        expected_response \u003d {u\u0027description\u0027: u\"Field \u0027state\u0027 is required\","},{"line_number":904,"context_line":"                             u\u0027title\u0027: u\u0027Unprocessable Entity\u0027}"},{"line_number":905,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":906,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":907,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":908,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":909,"context_line":"                                         method\u003d\u0027PUT\u0027,"},{"line_number":910,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":911,"context_line":""},{"line_number":912,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":913,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_response))"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"    def test_alarms_patch(self):"},{"line_number":916,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":917,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":918,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":919,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":920,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":921,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":922,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":923,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":924,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":925,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":926,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":927,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":928,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":929,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":930,"context_line":"             1550835096962)"},{"line_number":931,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":932,"context_line":"            {\u0027description\u0027: None,"},{"line_number":933,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":934,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":935,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":936,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":937,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":938,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":939,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":940,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":941,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":942,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":943,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":944,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":945,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":946,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":947,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":948,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":949,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":950,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":951,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":952,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":953,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":954,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":955,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":956,"context_line":"        alarm_new_fields \u003d {\u0027state\u0027: \u0027ALARM\u0027,"},{"line_number":957,"context_line":"                            \u0027lifecycle_state\u0027: \u0027OPEN\u0027,"},{"line_number":958,"context_line":"                            \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027}"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":961,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":962,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":963,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":964,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":965,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":966,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":967,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":968,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":969,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":970,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":971,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":972,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":973,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":974,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":975,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":976,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":979,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":980,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":981,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":982,"context_line":"                                         method\u003d\u0027PATCH\u0027,"},{"line_number":983,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":984,"context_line":""},{"line_number":985,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"},{"line_number":986,"context_line":"        self.assertThat(response, RESTResponseEquals(expected_alarm))"},{"line_number":987,"context_line":""},{"line_number":988,"context_line":"    def test_alarms_patch_without_new_fileds(self):"},{"line_number":989,"context_line":"        return_value \u003d self.alarms_repo_mock.return_value"},{"line_number":990,"context_line":"        return_value.get_alarm_metrics.return_value \u003d \\"},{"line_number":991,"context_line":"            [{\u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":992,"context_line":"              \u0027name\u0027: u\u0027cpu.idle_perc\u0027,"},{"line_number":993,"context_line":"              \u0027dimensions\u0027: u\u0027instance_id\u003d123,service\u003dmonitoring\u0027}]"},{"line_number":994,"context_line":"        return_value.get_sub_alarms.return_value \u003d \\"},{"line_number":995,"context_line":"            [{\u0027sub_alarm_id\u0027: u\u00271\u0027,"},{"line_number":996,"context_line":"              \u0027alarm_id\u0027: u\u00272\u0027,"},{"line_number":997,"context_line":"              \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":998,"context_line":"              \u0027alarm_definition_id\u0027: u\u00271\u0027}]"},{"line_number":999,"context_line":"        return_value.update_alarm.return_value \u003d \\"},{"line_number":1000,"context_line":"            ({\u0027state\u0027: u\u0027UNDETERMINED\u0027,"},{"line_number":1001,"context_line":"              \u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1002,"context_line":"              \u0027lifecycle_state\u0027: u\u0027OPEN\u0027},"},{"line_number":1003,"context_line":"             1550835096962)"},{"line_number":1004,"context_line":"        return_value.get_alarm_definition.return_value \u003d \\"},{"line_number":1005,"context_line":"            {\u0027description\u0027: None,"},{"line_number":1006,"context_line":"             \u0027tenant_id\u0027: u\u0027bob\u0027,"},{"line_number":1007,"context_line":"             \u0027created_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1008,"context_line":"             \u0027updated_at\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850963),"},{"line_number":1009,"context_line":"             \u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":1010,"context_line":"             \u0027actions_enabled\u0027: False,"},{"line_number":1011,"context_line":"             \u0027match_by\u0027: None,"},{"line_number":1012,"context_line":"             \u0027deleted_at\u0027: None,"},{"line_number":1013,"context_line":"             \u0027expression\u0027: u\u0027avg(cpu.idle_perc{instance_id\u003d123, service\u003dmonitoring}) \u003e 10\u0027,"},{"line_number":1014,"context_line":"             \u0027id\u0027: u\u00271\u0027,"},{"line_number":1015,"context_line":"             \u0027severity\u0027: u\u0027LOW\u0027}"},{"line_number":1016,"context_line":"        return_value.get_alarm.return_value \u003d \\"},{"line_number":1017,"context_line":"            [{\u0027alarm_definition_id\u0027: \u00271\u0027,"},{"line_number":1018,"context_line":"              \u0027metric_dimensions\u0027: \u0027instance_id\u003d123,service\u003dmonitoring\u0027,"},{"line_number":1019,"context_line":"              \u0027alarm_definition_name\u0027: \u002790% CPU\u0027,"},{"line_number":1020,"context_line":"              \u0027state\u0027: \u0027OK\u0027,"},{"line_number":1021,"context_line":"              \u0027state_updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1022,"context_line":"              \u0027metric_name\u0027: \u0027cpu.idle_perc\u0027,"},{"line_number":1023,"context_line":"              \u0027link\u0027: \u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1024,"context_line":"              \u0027severity\u0027: \u0027LOW\u0027,"},{"line_number":1025,"context_line":"              \u0027created_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1026,"context_line":"              \u0027updated_timestamp\u0027: datetime.datetime(2019, 2, 22, 12, 44, 25, 850947),"},{"line_number":1027,"context_line":"              \u0027alarm_id\u0027: \u00271\u0027,"},{"line_number":1028,"context_line":"              \u0027lifecycle_state\u0027: \u0027ALARM\u0027}]"},{"line_number":1029,"context_line":"        alarm_new_fields \u003d {}"},{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"        expected_alarm \u003d {u\u0027alarm_definition\u0027: {u\u0027id\u0027: u\u00271\u0027,"},{"line_number":1032,"context_line":"                                                u\u0027links\u0027: ["},{"line_number":1033,"context_line":"                                                    {u\u0027href\u0027: u\u0027http://falconframework.org\u0027"},{"line_number":1034,"context_line":"                                                              u\u0027/v2.0/alarm-definitions/1\u0027,"},{"line_number":1035,"context_line":"                                                     u\u0027rel\u0027: u\u0027self\u0027}],"},{"line_number":1036,"context_line":"                                                u\u0027name\u0027: u\u002790% CPU\u0027,"},{"line_number":1037,"context_line":"                                                u\u0027severity\u0027: u\u0027LOW\u0027},"},{"line_number":1038,"context_line":"                          u\u0027created_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":1039,"context_line":"                          u\u0027id\u0027: u\u00271\u0027,"},{"line_number":1040,"context_line":"                          u\u0027lifecycle_state\u0027: u\u0027ALARM\u0027,"},{"line_number":1041,"context_line":"                          u\u0027link\u0027: u\u0027http://somesite.com/this-alarm-info\u0027,"},{"line_number":1042,"context_line":"                          u\u0027metrics\u0027: [{u\u0027dimensions\u0027: {u\u0027instance_id\u0027: u\u0027123\u0027,"},{"line_number":1043,"context_line":"                                                        u\u0027service\u0027: u\u0027monitoring\u0027},"},{"line_number":1044,"context_line":"                                        u\u0027name\u0027: u\u0027cpu.idle_perc\u0027}],"},{"line_number":1045,"context_line":"                          u\u0027state\u0027: u\u0027OK\u0027,"},{"line_number":1046,"context_line":"                          u\u0027state_updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027,"},{"line_number":1047,"context_line":"                          u\u0027updated_timestamp\u0027: u\u00272019-02-22T12:44:25.850947Z\u0027}"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"        response \u003d self.simulate_request(\u0027/v2.0/alarms/2\u0027,"},{"line_number":1050,"context_line":"                                         headers\u003d{\u0027X-Roles\u0027:"},{"line_number":1051,"context_line":"                                                  CONF.security.default_authorized_roles[0],"},{"line_number":1052,"context_line":"                                                  \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":1053,"context_line":"                                         method\u003d\u0027PATCH\u0027,"},{"line_number":1054,"context_line":"                                         body\u003djson.dumps(alarm_new_fields))"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_200)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_24219bfc","line":1053,"range":{"start_line":202,"start_character":30,"end_line":1053,"end_character":55},"in_reply_to":"5fc1f717_50b11ce1","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_409)"},{"line_number":1324,"context_line":""},{"line_number":1325,"context_line":"    def test_alarm_definition_put_incorrect_period_value(self):"},{"line_number":1326,"context_line":"        self.alarm_def_repo_mock.return_value.get_alarm_definitions.return_value \u003d []"},{"line_number":1327,"context_line":""},{"line_number":1328,"context_line":"        alarm_def \u003d {"},{"line_number":1329,"context_line":"            u\u0027alarm_actions\u0027: [],"},{"line_number":1330,"context_line":"            u\u0027ok_actions\u0027: [],"},{"line_number":1331,"context_line":"            u\u0027description\u0027: u\u0027\u0027,"},{"line_number":1332,"context_line":"            u\u0027match_by\u0027: [u\u0027hostname\u0027],"},{"line_number":1333,"context_line":"            u\u0027name\u0027: u\u0027Test Alarm\u0027,"},{"line_number":1334,"context_line":"            u\u0027actions_enabled\u0027: True,"},{"line_number":1335,"context_line":"            u\u0027undetermined_actions\u0027: [],"},{"line_number":1336,"context_line":"            u\u0027deterministic\u0027: False,"},{"line_number":1337,"context_line":"            u\u0027expression\u0027: u\u0027max(test.metric{hostname\u003dhost}) gte 1 times 0\u0027,"},{"line_number":1338,"context_line":"            u\u0027severity\u0027: u\u0027LOW\u0027,"},{"line_number":1339,"context_line":"        }"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        self.simulate_request(\"/v2.0/alarm-definitions/00000001-0001-0001-0001-000000000001\","},{"line_number":1342,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":1343,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":1344,"context_line":"                              method\u003d\"PUT\","},{"line_number":1345,"context_line":"                              body\u003djson.dumps(alarm_def))"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_alarm_definition_patch_no_id(self):"},{"line_number":1350,"context_line":"        alarm_def \u003d {"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_9061c43c","line":1347,"range":{"start_line":1325,"start_character":8,"end_line":1347,"end_character":61},"updated":"2019-03-06 14:27:20.000000000","message":"Maybe I\u0027m blind but where is period set here?","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"c03a39942097c44254fccecea420edb8b98a5f2a","unresolved":false,"context_lines":[{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_409)"},{"line_number":1324,"context_line":""},{"line_number":1325,"context_line":"    def test_alarm_definition_put_incorrect_period_value(self):"},{"line_number":1326,"context_line":"        self.alarm_def_repo_mock.return_value.get_alarm_definitions.return_value \u003d []"},{"line_number":1327,"context_line":""},{"line_number":1328,"context_line":"        alarm_def \u003d {"},{"line_number":1329,"context_line":"            u\u0027alarm_actions\u0027: [],"},{"line_number":1330,"context_line":"            u\u0027ok_actions\u0027: [],"},{"line_number":1331,"context_line":"            u\u0027description\u0027: u\u0027\u0027,"},{"line_number":1332,"context_line":"            u\u0027match_by\u0027: [u\u0027hostname\u0027],"},{"line_number":1333,"context_line":"            u\u0027name\u0027: u\u0027Test Alarm\u0027,"},{"line_number":1334,"context_line":"            u\u0027actions_enabled\u0027: True,"},{"line_number":1335,"context_line":"            u\u0027undetermined_actions\u0027: [],"},{"line_number":1336,"context_line":"            u\u0027deterministic\u0027: False,"},{"line_number":1337,"context_line":"            u\u0027expression\u0027: u\u0027max(test.metric{hostname\u003dhost}) gte 1 times 0\u0027,"},{"line_number":1338,"context_line":"            u\u0027severity\u0027: u\u0027LOW\u0027,"},{"line_number":1339,"context_line":"        }"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        self.simulate_request(\"/v2.0/alarm-definitions/00000001-0001-0001-0001-000000000001\","},{"line_number":1342,"context_line":"                              headers\u003d{\u0027X-Roles\u0027: CONF.security.default_authorized_roles[0],"},{"line_number":1343,"context_line":"                                       \u0027X-Tenant-Id\u0027: TENANT_ID},"},{"line_number":1344,"context_line":"                              method\u003d\"PUT\","},{"line_number":1345,"context_line":"                              body\u003djson.dumps(alarm_def))"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"        self.assertEqual(self.srmock.status, falcon.HTTP_422)"},{"line_number":1348,"context_line":""},{"line_number":1349,"context_line":"    def test_alarm_definition_patch_no_id(self):"},{"line_number":1350,"context_line":"        alarm_def \u003d {"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_4474e735","line":1347,"range":{"start_line":1325,"start_character":8,"end_line":1347,"end_character":61},"in_reply_to":"5fc1f717_9061c43c","updated":"2019-03-07 10:16:57.000000000","message":"Period is in expression times 0","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":2087,"context_line":"    def test_alarm_definition_get_query_alarm_definition_is_definition_deterministic(self):"},{"line_number":2088,"context_line":"        expression \u003d u\u0027max(test.metric{hostname\u003dhost}) gte 1\u0027"},{"line_number":2089,"context_line":"        is_deterministic \u003d alarm_definitions.is_definition_deterministic(expression)"},{"line_number":2090,"context_line":"        self.assertEqual(False, is_deterministic)"},{"line_number":2091,"context_line":""},{"line_number":2092,"context_line":"        expression \u003d u\u0027max(test.metric{hostname\u003dhost}, deterministic) gte 1\u0027"},{"line_number":2093,"context_line":"        is_deterministic \u003d alarm_definitions.is_definition_deterministic(expression)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_30001035","line":2090,"range":{"start_line":2090,"start_character":25,"end_line":2090,"end_character":30},"updated":"2019-03-06 14:27:20.000000000","message":"move expected value to end","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":2091,"context_line":""},{"line_number":2092,"context_line":"        expression \u003d u\u0027max(test.metric{hostname\u003dhost}, deterministic) gte 1\u0027"},{"line_number":2093,"context_line":"        is_deterministic \u003d alarm_definitions.is_definition_deterministic(expression)"},{"line_number":2094,"context_line":"        self.assertEqual(True, is_deterministic)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_d0fc2c40","line":2094,"range":{"start_line":2094,"start_character":25,"end_line":2094,"end_character":29},"updated":"2019-03-06 14:27:20.000000000","message":"move expected value to end","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_message_formats.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.assertEqual(expected_metrics, json.loads(transformed_metric[0]))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow_ts\u0027)"},{"line_number":39,"context_line":"    def test_multiple_metrics_metrics(self, time):"},{"line_number":40,"context_line":"        time.return_value \u003d 514862580"},{"line_number":41,"context_line":"        tenant_id \u003d 222"},{"line_number":42,"context_line":"        region \u003d \u0027default\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_f08e08cf","line":39,"range":{"start_line":39,"start_character":29,"end_line":39,"end_character":37},"updated":"2019-03-06 14:27:20.000000000","message":"remove","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"df82f313fb31ffae4d028f0fcc8d2eff1a7b4324","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.assertEqual(expected_metrics, json.loads(transformed_metric[0]))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow_ts\u0027)"},{"line_number":39,"context_line":"    def test_multiple_metrics_metrics(self, time):"},{"line_number":40,"context_line":"        time.return_value \u003d 514862580"},{"line_number":41,"context_line":"        tenant_id \u003d 222"},{"line_number":42,"context_line":"        region \u003d \u0027default\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_441e27bb","line":39,"range":{"start_line":39,"start_character":29,"end_line":39,"end_character":37},"in_reply_to":"5fc1f717_f08e08cf","updated":"2019-03-07 10:21:03.000000000","message":"Done","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_nm_repository.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        expected \u003d (\u0027123\u0027, \u0027444\u0027, \u0027MyEmail\u0027, \u0027EMAIL\u0027, \u0027a@b\u0027, 0,"},{"line_number":174,"context_line":"                    self.created_at,"},{"line_number":175,"context_line":"                    self.updated_at)"},{"line_number":176,"context_line":"        self.assertEqual(expected, nms)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def test_should_find(self):"},{"line_number":179,"context_line":"        nms \u003d self.repo.list_notifications(\u0027444\u0027, None, None, 2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_7071b8e0","line":176,"range":{"start_line":176,"start_character":25,"end_line":176,"end_character":33},"updated":"2019-03-06 14:27:20.000000000","message":"move expected to end","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ebf04c7a21928cad6959277722a9890c5efe0e0e","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        nms \u003d self.repo.list_notifications(\u0027444\u0027, [\u0027name\u0027], None, 3)"},{"line_number":189,"context_line":"        expected \u003d sorted(self.default_nms, key\u003dlambda k: k[\u0027name\u0027])"},{"line_number":190,"context_line":"        self.assertEqual(expected, nms)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_update(self):"},{"line_number":193,"context_line":"        import copy"}],"source_content_type":"text/x-python","patch_set":20,"id":"5fc1f717_307330ea","line":190,"range":{"start_line":190,"start_character":25,"end_line":190,"end_character":33},"updated":"2019-03-06 14:27:20.000000000","message":"move expected to end","commit_id":"803cb109349793d8a1d3007c75a1b0f3cb5510a8"}],"monasca_api/tests/test_request.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"796822cf9f79ec1d849fc9fc48253a9f2813656e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.assertEqual([\u0027terminator\u0027, \u0027predator\u0027], req.roles)"},{"line_number":53,"context_line":"        self.assertEqual(\u0027444\u0027, req.cross_project_id)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_policy_validation_without_target(self):"},{"line_number":56,"context_line":"        req \u003d request.Request("},{"line_number":57,"context_line":"            self.create_environ("},{"line_number":58,"context_line":"                path\u003d\u0027/\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_f398366b","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":45},"updated":"2019-03-07 15:03:02.000000000","message":"I think this is with_target and next should be without target.","commit_id":"bdfe1aa2da90a15698d3f51f0c710814c21cd438"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"63c675c777c71cf73f205b03f5802a73162977dc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.assertEqual([\u0027terminator\u0027, \u0027predator\u0027], req.roles)"},{"line_number":53,"context_line":"        self.assertEqual(\u0027444\u0027, req.cross_project_id)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_policy_validation_without_target(self):"},{"line_number":56,"context_line":"        req \u003d request.Request("},{"line_number":57,"context_line":"            self.create_environ("},{"line_number":58,"context_line":"                path\u003d\u0027/\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_f7178750","line":55,"range":{"start_line":55,"start_character":8,"end_line":55,"end_character":45},"in_reply_to":"5fc1f717_f398366b","updated":"2019-03-12 08:02:18.000000000","message":"Done","commit_id":"bdfe1aa2da90a15698d3f51f0c710814c21cd438"}],"monasca_api/tests/test_sub_alarm_definition.py":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"796822cf9f79ec1d849fc9fc48253a9f2813656e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        dimension_dict \u003d {\u0027device\u0027: \u00271\u0027,"},{"line_number":32,"context_line":"                          \u0027image_id\u0027: \u0027888\u0027}"},{"line_number":33,"context_line":"        sub_alarm_d \u003d sub_alarm_definition.SubAlarmDefinition(row\u003dsub_alarm_d_dict)"},{"line_number":34,"context_line":"        self.assertEqual(sub_alarm_d.id, sub_alarm_d_dict[\u0027id\u0027])"},{"line_number":35,"context_line":"        self.assertEqual(sub_alarm_d.alarm_definition_id, sub_alarm_d_dict[\u0027alarm_definition_id\u0027])"},{"line_number":36,"context_line":"        self.assertEqual(sub_alarm_d.metric_name, sub_alarm_d_dict[\u0027metric_name\u0027])"},{"line_number":37,"context_line":"        self.assertEqual(sub_alarm_d.dimensions_str, sub_alarm_d_dict[\u0027dimensions\u0027])"},{"line_number":38,"context_line":"        self.assertEqual(sub_alarm_d.dimensions, dimension_dict)"},{"line_number":39,"context_line":"        self.assertEqual(sub_alarm_d.function, sub_alarm_d_dict[\u0027function\u0027])"},{"line_number":40,"context_line":"        self.assertEqual(sub_alarm_d.operator, sub_alarm_d_dict[\u0027operator\u0027])"},{"line_number":41,"context_line":"        self.assertEqual(sub_alarm_d.period, sub_alarm_d_dict[\u0027period\u0027])"},{"line_number":42,"context_line":"        self.assertEqual(sub_alarm_d.periods, sub_alarm_d_dict[\u0027periods\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(sub_alarm_d.threshold, sub_alarm_d_dict[\u0027threshold\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(sub_alarm_d.deterministic, True)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_init_from_sub_expr(self):"},{"line_number":47,"context_line":"        sub_alarm_d_dict \u003d {\u0027function\u0027: \u0027AVG\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_d3697a25","line":44,"range":{"start_line":34,"start_character":0,"end_line":44,"end_character":56},"updated":"2019-03-07 15:03:02.000000000","message":"move expected to start","commit_id":"bdfe1aa2da90a15698d3f51f0c710814c21cd438"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"63c675c777c71cf73f205b03f5802a73162977dc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        dimension_dict \u003d {\u0027device\u0027: \u00271\u0027,"},{"line_number":32,"context_line":"                          \u0027image_id\u0027: \u0027888\u0027}"},{"line_number":33,"context_line":"        sub_alarm_d \u003d sub_alarm_definition.SubAlarmDefinition(row\u003dsub_alarm_d_dict)"},{"line_number":34,"context_line":"        self.assertEqual(sub_alarm_d.id, sub_alarm_d_dict[\u0027id\u0027])"},{"line_number":35,"context_line":"        self.assertEqual(sub_alarm_d.alarm_definition_id, sub_alarm_d_dict[\u0027alarm_definition_id\u0027])"},{"line_number":36,"context_line":"        self.assertEqual(sub_alarm_d.metric_name, sub_alarm_d_dict[\u0027metric_name\u0027])"},{"line_number":37,"context_line":"        self.assertEqual(sub_alarm_d.dimensions_str, sub_alarm_d_dict[\u0027dimensions\u0027])"},{"line_number":38,"context_line":"        self.assertEqual(sub_alarm_d.dimensions, dimension_dict)"},{"line_number":39,"context_line":"        self.assertEqual(sub_alarm_d.function, sub_alarm_d_dict[\u0027function\u0027])"},{"line_number":40,"context_line":"        self.assertEqual(sub_alarm_d.operator, sub_alarm_d_dict[\u0027operator\u0027])"},{"line_number":41,"context_line":"        self.assertEqual(sub_alarm_d.period, sub_alarm_d_dict[\u0027period\u0027])"},{"line_number":42,"context_line":"        self.assertEqual(sub_alarm_d.periods, sub_alarm_d_dict[\u0027periods\u0027])"},{"line_number":43,"context_line":"        self.assertEqual(sub_alarm_d.threshold, sub_alarm_d_dict[\u0027threshold\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(sub_alarm_d.deterministic, True)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_init_from_sub_expr(self):"},{"line_number":47,"context_line":"        sub_alarm_d_dict \u003d {\u0027function\u0027: \u0027AVG\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_970e4339","line":44,"range":{"start_line":34,"start_character":0,"end_line":44,"end_character":56},"in_reply_to":"5fc1f717_d3697a25","updated":"2019-03-12 08:02:18.000000000","message":"Done","commit_id":"bdfe1aa2da90a15698d3f51f0c710814c21cd438"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"796822cf9f79ec1d849fc9fc48253a9f2813656e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.assertEqual(sub_alarm_d.threshold, sub_alarm_d_dict[\u0027threshold\u0027])"},{"line_number":68,"context_line":"        self.assertEqual(sub_alarm_d.deterministic, False)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_init_from_row_and_sub_expr(self):"},{"line_number":71,"context_line":"        sub_alarm_d_dict \u003d {\u0027id\u0027: \u0027111\u0027,"},{"line_number":72,"context_line":"                            \u0027alarm_definition_id\u0027: \u0027123\u0027,"},{"line_number":73,"context_line":"                            \u0027function\u0027: \u0027AVG\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_f38276c8","line":70,"range":{"start_line":70,"start_character":18,"end_line":70,"end_character":26},"updated":"2019-03-07 15:03:02.000000000","message":"from_both_","commit_id":"bdfe1aa2da90a15698d3f51f0c710814c21cd438"}],"tox.ini":[{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"796822cf9f79ec1d849fc9fc48253a9f2813656e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  oslo_debug_helper -t ./monasca_api/tests {posargs}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[testenv:flake8]"},{"line_number":40,"context_line":"basepython \u003d python3"},{"line_number":41,"context_line":"skip_install \u003d True"},{"line_number":42,"context_line":"usedevelop \u003d False"},{"line_number":43,"context_line":"commands \u003d"}],"source_content_type":"text/x-properties","patch_set":21,"id":"5fc1f717_13614237","side":"PARENT","line":40,"range":{"start_line":40,"start_character":0,"end_line":40,"end_character":20},"updated":"2019-03-07 15:03:02.000000000","message":"restore","commit_id":"55a172c0725d4d4f517eb3f4e79f54fe42e73b5e"}]}
