)]}'
{"tempest/api/database/limits/test_limits.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d3d2f34b80ae9e1b10b3e958c55f95dbfa11fdee","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setUpClass(cls):"},{"line_number":25,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":26,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":27,"context_line":"        cls.actual_verbs \u003d list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2Fu5c%3D","line":24,"updated":"2014-04-28 11:58:53.000000000","message":"Please add the decorator @test.safe_setup to avoid resource leakage.","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"874e50afbe543f0ef761bd56b143ada95cfeb7ca","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setUpClass(cls):"},{"line_number":25,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":26,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":27,"context_line":"        cls.actual_verbs \u003d list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_77c0d8e0","line":24,"in_reply_to":"AAAAXX%2F%2Fu5c%3D","updated":"2014-05-02 05:59:26.000000000","message":"Done","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d3d2f34b80ae9e1b10b3e958c55f95dbfa11fdee","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_all_verbs_limits(self):"},{"line_number":34,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":35,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":36,"context_line":"        self.assertEqual(self.resp.status, 200)"},{"line_number":37,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":38,"context_line":"                         self.actual_verbs]"},{"line_number":39,"context_line":"        self.assertEqual(0, len(missing_verbs),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2Fu58%3D","line":36,"updated":"2014-04-28 11:58:53.000000000","message":"Please change the order of assertEqual. (expected, actual)","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"874e50afbe543f0ef761bd56b143ada95cfeb7ca","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_all_verbs_limits(self):"},{"line_number":34,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":35,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":36,"context_line":"        self.assertEqual(self.resp.status, 200)"},{"line_number":37,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":38,"context_line":"                         self.actual_verbs]"},{"line_number":39,"context_line":"        self.assertEqual(0, len(missing_verbs),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_d7b0c48d","line":36,"in_reply_to":"AAAAXX%2F%2Fu58%3D","updated":"2014-05-02 05:59:26.000000000","message":"Done","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"30523589e8f02d3ca7a3888e7fcd5f3b5d053cfa","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def test_absolute_limits(self):"},{"line_number":46,"context_line":"        # Test to verify if all absolute limit paramaters are"},{"line_number":47,"context_line":"        # present when verb is ABSOLUTE"},{"line_number":48,"context_line":"        if \u0027ABSOLUTE\u0027 in self.actual_verbs:"},{"line_number":49,"context_line":"            expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":50,"context_line":"                                   \u0027max_instances\u0027]"},{"line_number":51,"context_line":"            actual_abs_limits \u003d list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FVo4%3D","line":48,"updated":"2014-04-15 09:43:45.000000000","message":"What causes the \u0027ABSOLUTE\u0027 verb exist or not exists ?\nWouldn\u0027t be better to create config option about expect or not expect \u0027ABSOLUTE\u0027 presence ?","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ac8873a6ea2975dbfb73d4727557fc84aea75cee","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def test_absolute_limits(self):"},{"line_number":46,"context_line":"        # Test to verify if all absolute limit paramaters are"},{"line_number":47,"context_line":"        # present when verb is ABSOLUTE"},{"line_number":48,"context_line":"        if \u0027ABSOLUTE\u0027 in self.actual_verbs:"},{"line_number":49,"context_line":"            expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":50,"context_line":"                                   \u0027max_instances\u0027]"},{"line_number":51,"context_line":"            actual_abs_limits \u003d list()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2F52M%3D","line":48,"in_reply_to":"AAAAW3%2F%2FVo4%3D","updated":"2014-04-16 15:32:37.000000000","message":"Hi afazekas,\n\nThe \u0027ABSOLUTE\u0027 verb is supposed to exists for sure in the response of \u0027list_db_limits\u0027. If the verb \u0027ABSOLUTE\u0027 is missing in the response, it would be a bug and hence the testcase \"test_all_verbs_limits\" will fail.\n\nThus IMHO, it would not be appropriate to add a config option for this.\n\nRegards,\nRajalakshmi Ganesan","commit_id":"1d60adf55f21ce88fcddb9ba810dcea942d91298"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"4b2348d839b2d67ef44ba7980e6f7eb1931ae529","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":"        cls.actual_verbs \u003d list()"},{"line_number":29,"context_line":"        cls.resp, cls.limits \u003d cls.client.list_db_limits()"},{"line_number":30,"context_line":"        for limit in cls.limits:"},{"line_number":31,"context_line":"            cls.actual_verbs.append(limit[\u0027verb\u0027])"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_727b10f5","line":29,"updated":"2014-05-07 10:53:28.000000000","message":"What about \n\n    assert 200 \u003d\u003d resp.status\n\nhere?\n\nZhi Kun Liu, Peter Stachowski, rajalakshmi-ganesan, what do you think about that?","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3c39966cf4571334b962a07f8297d3876bd6bb8d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_all_verbs_limits(self):"},{"line_number":35,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":36,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":37,"context_line":"        self.assertEqual(200, self.resp.status)"},{"line_number":38,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":39,"context_line":"                         self.actual_verbs]"},{"line_number":40,"context_line":"        self.assertEqual(0, len(missing_verbs),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_b4d4e820","line":37,"updated":"2014-05-05 09:00:57.000000000","message":"It is a little strange to check  response code here. It should be check after the api calling code(after line 29) so as to catch error at once and easy to debug.","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"119041857e04798245dd48ca7b57f1fd9323581e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_all_verbs_limits(self):"},{"line_number":35,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":36,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":37,"context_line":"        self.assertEqual(200, self.resp.status)"},{"line_number":38,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":39,"context_line":"                         self.actual_verbs]"},{"line_number":40,"context_line":"        self.assertEqual(0, len(missing_verbs),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_c0cb3851","line":37,"in_reply_to":"9ad9bd40_b4d4e820","updated":"2014-05-06 18:50:45.000000000","message":"I agree, it makes sense to put the assert right after the call","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"e52a54b110adf94cb0e7ccb44b652fc8eed3a9d0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_all_verbs_limits(self):"},{"line_number":35,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":36,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":37,"context_line":"        self.assertEqual(200, self.resp.status)"},{"line_number":38,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":39,"context_line":"                         self.actual_verbs]"},{"line_number":40,"context_line":"        self.assertEqual(0, len(missing_verbs),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_5250ccd3","line":37,"in_reply_to":"9ad9bd40_c0cb3851","updated":"2014-05-07 10:08:06.000000000","message":"Done\n\nAs it is generally not a good practice to assert response in the setUp class(moreover, assertEqual does not work with class object) the list_db_limits call and the corresponding assert statement, list appending are moved to a method \"_list_db_limits\". This method is initially being called in two test cases.\n\nPlease check next patch.","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3c39966cf4571334b962a07f8297d3876bd6bb8d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def test_absolute_limits(self):"},{"line_number":47,"context_line":"        # Test to verify if all absolute limit paramaters are"},{"line_number":48,"context_line":"        # present when verb is ABSOLUTE"},{"line_number":49,"context_line":"        if \u0027ABSOLUTE\u0027 in self.actual_verbs:"},{"line_number":50,"context_line":"            expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":51,"context_line":"                                   \u0027max_instances\u0027]"},{"line_number":52,"context_line":"            actual_abs_limits \u003d list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_74826095","line":49,"updated":"2014-05-05 09:00:57.000000000","message":"Is this a necessary check?  \u0027ABSOLUTE\u0027 seems a necessary condition for this test class. I mean if \u0027ABSOLUTE\u0027 is missed, test_all_verbs_limits will fail, it should be same to test_absolute_limits.","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"119041857e04798245dd48ca7b57f1fd9323581e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def test_absolute_limits(self):"},{"line_number":47,"context_line":"        # Test to verify if all absolute limit paramaters are"},{"line_number":48,"context_line":"        # present when verb is ABSOLUTE"},{"line_number":49,"context_line":"        if \u0027ABSOLUTE\u0027 in self.actual_verbs:"},{"line_number":50,"context_line":"            expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":51,"context_line":"                                   \u0027max_instances\u0027]"},{"line_number":52,"context_line":"            actual_abs_limits \u003d list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_c0f97881","line":49,"in_reply_to":"9ad9bd40_74826095","updated":"2014-05-06 18:50:45.000000000","message":"I agree as well - having this test report as being \u0027skipped\u0027 if ABSOLUTE is missing could be confusing since the above test will fail.  Better that they both fail.\nGood catch on both, Zhi.","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"e52a54b110adf94cb0e7ccb44b652fc8eed3a9d0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def test_absolute_limits(self):"},{"line_number":47,"context_line":"        # Test to verify if all absolute limit paramaters are"},{"line_number":48,"context_line":"        # present when verb is ABSOLUTE"},{"line_number":49,"context_line":"        if \u0027ABSOLUTE\u0027 in self.actual_verbs:"},{"line_number":50,"context_line":"            expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":51,"context_line":"                                   \u0027max_instances\u0027]"},{"line_number":52,"context_line":"            actual_abs_limits \u003d list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_173e3628","line":49,"in_reply_to":"9ad9bd40_c0f97881","updated":"2014-05-07 10:08:06.000000000","message":"The aim of this test case is to check if absolute limits values are returned in the response of list_db_limits.\n\nIMHO, if the verb \"ABSOLUTE\" is not present in the response there is no need to run this test case. Already the above test indicates the failure. why again unnecessary failure for same reason.\n\nFailing two tests for absence of verb \"ABSOLUTE\" would not be correct. Failure of this test case would occur only if one or more of absolute limit value is missing. I mean when parameter from [\u0027max_backups\u0027, \u0027max_volumes\u0027, \u0027max_instances\u0027] is absent in response.\n\nPlease correct me if I am wrong.","commit_id":"d7f0fe8cfb9ed09c848a6e69c559d757aec82d42"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"07e34310a820adad56c5e86e663bb53da86f4f65","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    @test.safe_setup"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_a47b4628","line":27,"updated":"2014-05-07 13:57:41.000000000","message":"May be, leave setUpClass as in previous patch set?\nWhat about\n\n    assert 200 \u003d\u003d resp.status\n\nhere?\n\n    @classmethod\n    @test.safe_setup\n    def setUpClass(cls):\n        super(DatabaseLimitsTest, cls).setUpClass()\n        cls.client \u003d cls.database_limits_client\n        cls.actual_verbs \u003d list()\n        cls.resp, cls.limits \u003d cls.client.list_db_limits()\n        assert 200 \u003d\u003d resp.status\n        for limit in cls.limits:\n            cls.actual_verbs.append(limit[\u0027verb\u0027])\n\nZhi Kun Liu, Peter Stachowski, rajalakshmi-ganesan, what do you think about that?","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"47fbb61b78d4037ebe748b684d5e91a43ef765ae","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    @test.safe_setup"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_e0afe829","line":27,"in_reply_to":"7adec928_a47b4628","updated":"2014-05-08 01:47:41.000000000","message":"I don\u0027t have strong opinion for it. Both of two ways are fine for me. This  seems a simple way as it doesn\u0027t need a new method.","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"81bfcd157872652823759982085a9c077dea7026","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"},{"line_number":34,"context_line":"            self.actual_verbs.append(limit[\u0027verb\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":37,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_f3c7d262","line":34,"updated":"2014-05-07 16:21:43.000000000","message":"I like breaking it out into a method since future tests might not\nneed this functionality - just one suggestion, why not short-circuit\nthe code by wrapping it in:\n\n    if not self.actual_verbs:\n\nthat way it only gets run once.\n\nHow does that sound?","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"37954ffa97428243ae854f697b736df2f838375f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"},{"line_number":34,"context_line":"            self.actual_verbs.append(limit[\u0027verb\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":37,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_31a59653","line":34,"in_reply_to":"7adec928_16cb30a6","updated":"2014-05-08 16:08:37.000000000","message":"See the next patch set for a (hopefully) better explanation :)","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"2b592a7564b61ee5825425b190fcfff7ff1b53af","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"},{"line_number":34,"context_line":"            self.actual_verbs.append(limit[\u0027verb\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":37,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_16cb30a6","line":34,"in_reply_to":"7adec928_2cf54683","updated":"2014-05-08 14:53:37.000000000","message":"Hi Stachowski,\n\nThe variable actual_verbs is a method level variable, every time we switch to a new method, the variable actual_verbs is new again. We also cannot avoid the declaration self.actual_verbs \u003d list().\n\nThus the values appended in one method call cannot be stored and used till next method call. Can you please correct me if I am wrong and explain in detail with line number where you intended to add \n\n\"if not self.actual_verbs:\"\n\nRegards,\nRajalakshmi Ganesan","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1406b185179e840fe63ec4a8e66dd1fc72af5223","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"},{"line_number":34,"context_line":"            self.actual_verbs.append(limit[\u0027verb\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":37,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_2cf54683","line":34,"in_reply_to":"7adec928_f3c7d262","updated":"2014-05-08 08:16:14.000000000","message":"I like it.","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"47fbb61b78d4037ebe748b684d5e91a43ef765ae","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                              if l[\u0027verb\u0027] \u003d\u003d \u0027ABSOLUTE\u0027]"},{"line_number":59,"context_line":"            self.assertEqual(1, len(absolute_limit), \"Only one ABSOLUTE limit \""},{"line_number":60,"context_line":"                             \"verb is allowed. Fetched %s\""},{"line_number":61,"context_line":"                             % len(absolute_limit))"},{"line_number":62,"context_line":"            actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":63,"context_line":"            missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":64,"context_line":"                                 if a not in actual_abs_limits]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_7b52ad14","line":61,"updated":"2014-05-08 01:47:41.000000000","message":"If skip checking is removed test will fail in this line when \u0027ABSOLUTE\u0027 is missed. It\u0027s better than skipping test. The expected count is 1, but fetched 0.","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"2b592a7564b61ee5825425b190fcfff7ff1b53af","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                              if l[\u0027verb\u0027] \u003d\u003d \u0027ABSOLUTE\u0027]"},{"line_number":59,"context_line":"            self.assertEqual(1, len(absolute_limit), \"Only one ABSOLUTE limit \""},{"line_number":60,"context_line":"                             \"verb is allowed. Fetched %s\""},{"line_number":61,"context_line":"                             % len(absolute_limit))"},{"line_number":62,"context_line":"            actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":63,"context_line":"            missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":64,"context_line":"                                 if a not in actual_abs_limits]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_9676603d","line":61,"in_reply_to":"7adec928_7b52ad14","updated":"2014-05-08 14:53:37.000000000","message":"Done","commit_id":"76fa4c740d38d209a8d97b736f8bcfb58ef4737f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c8357ea4e430cfa12f62984645d6aa5a961ea7ec","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    @test.safe_setup"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        super(DatabaseLimitsTest, cls).setUpClass()"},{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_116eda01","line":27,"updated":"2014-05-08 16:07:27.000000000","message":"To address your comment in patchset #4: You\u0027d have to use a class variable here (in fact, it\u0027s already a class variable, because it\u0027s defined as self.actual_verbs).  That means actual_verbs will be available from different methods.  You\u0027d have to create it here though so it already exists:\n\n        cls.actual_verbs \u003d list()","commit_id":"6c0580ede0b972a2810202c854be322765ad9c96"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c8357ea4e430cfa12f62984645d6aa5a961ea7ec","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"},{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_3c5d6d22","line":30,"updated":"2014-05-08 16:07:27.000000000","message":"Once actual_verbs exists in the class, you can check if it\u0027s populated here first, instead of initializing it (you can replace \u0027self.actual_verbs \u003d list()\u0027 with the following line):\n\n        if not self.actual_verbs:\n\nThen the remaining code should only run once.\n\nNot a big concern of mine though, just a suggestion.","commit_id":"6c0580ede0b972a2810202c854be322765ad9c96"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"04a44c2754ba5bdd00097e9e8cace5e894512b92","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"},{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_5684cad3","line":30,"in_reply_to":"7adec928_3c5d6d22","updated":"2014-05-09 01:45:34.000000000","message":"Repeat this method call should be fine. It maybe required by the tests which want to get a fresh list when limits updates.","commit_id":"6c0580ede0b972a2810202c854be322765ad9c96"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ecc985a52d43b9b1440d84f705529407be521fd4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        cls.client \u003d cls.database_limits_client"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _list_db_limits(self):"},{"line_number":30,"context_line":"        self.actual_verbs \u003d list()"},{"line_number":31,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":32,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":33,"context_line":"        for limit in self.limits:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_7f68b9ba","line":30,"in_reply_to":"7adec928_3c5d6d22","updated":"2014-05-09 04:46:35.000000000","message":"Thanks for the detailed explanation Stachowski. But this method can be left as it is based on comment by Zhi Kun Liu.\n\nRegards,\nRajalakshmi Ganesan","commit_id":"6c0580ede0b972a2810202c854be322765ad9c96"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db7e64de9c7c815ee9312e9051477a06d53eee32","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":41,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":42,"context_line":"                         self.actual_verbs]"},{"line_number":43,"context_line":"        self.assertEqual(0, len(missing_verbs),"},{"line_number":44,"context_line":"                         \"Failed to find the following expected verb(s)\""},{"line_number":45,"context_line":"                         \" in a fetched list: %s\" %"},{"line_number":46,"context_line":"                         \u0027, \u0027.join(str(v) for v in missing_verbs))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_5dbce069","line":43,"updated":"2014-05-31 14:55:01.000000000","message":"why aren\u0027t we just comparing expected vs. missing.\n\nexpected \u003d sorted([\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027])\n\nfound \u003d sorted([x[\u0027verb\u0027] for x in self.limits])\n\nself.assertEqual(found, expected)","commit_id":"5bc67436b247dcfd6131b7c8aac0429b7f4ad69a"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"47269fc5a7388f348708af88c75f8d6bd2bf4a68","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":41,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":42,"context_line":"                         self.actual_verbs]"},{"line_number":43,"context_line":"        self.assertEqual(0, len(missing_verbs),"},{"line_number":44,"context_line":"                         \"Failed to find the following expected verb(s)\""},{"line_number":45,"context_line":"                         \" in a fetched list: %s\" %"},{"line_number":46,"context_line":"                         \u0027, \u0027.join(str(v) for v in missing_verbs))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_ce39d3f3","line":43,"in_reply_to":"1ae5cdf2_5dbce069","updated":"2014-06-04 07:38:37.000000000","message":"Done","commit_id":"5bc67436b247dcfd6131b7c8aac0429b7f4ad69a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ab20e9563f8c0f3d267c41db7596bbdc06167178","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        expected_verbs \u003d [\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027PUT\u0027, \u0027GET\u0027, \u0027DELETE\u0027]"},{"line_number":41,"context_line":"        missing_verbs \u003d [v for v in expected_verbs if v not in"},{"line_number":42,"context_line":"                         self.actual_verbs]"},{"line_number":43,"context_line":"        self.assertEqual(0, len(missing_verbs),"},{"line_number":44,"context_line":"                         \"Failed to find the following expected verb(s)\""},{"line_number":45,"context_line":"                         \" in a fetched list: %s\" %"},{"line_number":46,"context_line":"                         \u0027, \u0027.join(str(v) for v in missing_verbs))"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_93a3954e","line":43,"in_reply_to":"1ae5cdf2_5dbce069","updated":"2014-06-02 16:19:54.000000000","message":"except I believe it should be:\n\n self.assertEqual(expected, found)\n\nBTW: I agree with this - that way you\u0027ll see the lists of values and can easily tell what\u0027s missing if it gets triggered.","commit_id":"5bc67436b247dcfd6131b7c8aac0429b7f4ad69a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c5b7a2815491e090e6708e8c96ce01e58781b94a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        expected_verbs \u003d sorted([\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027POST\u0027, \u0027PUT\u0027,"},{"line_number":39,"context_line":"                                \u0027GET\u0027, \u0027DELETE\u0027])"},{"line_number":40,"context_line":"        found_verbs \u003d sorted([l[\u0027verb\u0027] for l in self.limits])"},{"line_number":41,"context_line":"        self.assertEqual(expected_verbs, found_verbs, \"Failed to match actual\""},{"line_number":42,"context_line":"                         \"verbs %s with found verbs %s\""},{"line_number":43,"context_line":"                         % (expected_verbs, found_verbs))"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_8ac94528","line":41,"updated":"2014-06-04 15:25:48.000000000","message":"Actual and found mean pretty much the same thing.  You should change \u0027actual\u0027 to \u0027expected \u0027 (leave a space at the end or your words will run together).","commit_id":"060f5a2052a72f76443cda2a4abca67ca3a673b8"}]}
