)]}'
{"tempest/api/compute/admin/test_simple_tenant_usage.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e0d8bffc45c5130bfcbb5b02af1939e9fc3f4f25","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        # Returns formatted datetime"},{"line_number":47,"context_line":"        return at.strftime(\u0027%Y-%m-%dT%H:%M:%S.%f\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def call_until_valid(self, func, duration, *args, **kwargs):"},{"line_number":50,"context_line":"        now \u003d time.time()"},{"line_number":51,"context_line":"        timeout \u003d now + duration"},{"line_number":52,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_0ad21ed1","line":49,"updated":"2015-09-07 15:49:46.000000000","message":"You should use \u0027call_until_true\u0027 defined in tempest.test.py","commit_id":"c7d6b1abc2835f30ef12603c642eebe2d536507e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"41c58a03959e16864dee51803d9ff4fa5d57a2fe","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                return True"},{"line_number":53,"context_line":"            except e.InvalidHTTPResponseBody:"},{"line_number":54,"context_line":"                return False"},{"line_number":55,"context_line":"            except Exception:"},{"line_number":56,"context_line":"                raise"},{"line_number":57,"context_line":"        test.call_until_true(is_valid, duration, 1)"},{"line_number":58,"context_line":"        return self.resp"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_963f14b5","line":55,"updated":"2015-09-08 16:14:42.000000000","message":"This is not needed: if you do nothing else then raise, there\u0027s no need to catch the exception. Just remove L55 and L56.","commit_id":"285f2e21629ab6ed4d949a92e77723d58872200c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"41c58a03959e16864dee51803d9ff4fa5d57a2fe","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def test_list_usage_all_tenants(self):"},{"line_number":62,"context_line":"        # Get usage for all tenants"},{"line_number":63,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":64,"context_line":"            self.adm_client.list_tenant_usages, 60,"},{"line_number":65,"context_line":"            start\u003dself.start, end\u003dself.end, detailed\u003d\"1\")[\u0027tenant_usages\u0027][0]"},{"line_number":66,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_3685e858","line":64,"updated":"2015-09-08 16:14:42.000000000","message":"60 sec is a lot. If there\u0027s a bug here, this test will block for 60 seconds (*3 because there are 3 tests). Maybe 30 sec is enough ?","commit_id":"285f2e21629ab6ed4d949a92e77723d58872200c"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b2561ea7321acbd2e00e3a533c22e7729f13e8f4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def test_list_usage_all_tenants(self):"},{"line_number":60,"context_line":"        # Get usage for all tenants"},{"line_number":61,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":62,"context_line":"            self.adm_client.list_tenant_usages, 30,"},{"line_number":63,"context_line":"            start\u003dself.start, end\u003dself.end, detailed\u003d\"1\")[\u0027tenant_usages\u0027][0]"},{"line_number":64,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e9cebab3","line":62,"updated":"2015-09-14 00:57:21.000000000","message":"hmm, 30 is magic number which people can not understand the reason. So how about using  CONF.compute.build_timeout?\n(The default value is 300 seconds, though..)","commit_id":"ed573bddf24d9a42a22a2e648d4775b646ede954"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"64889bc3160fe2fdaeb083d5a46914d469750855","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def test_list_usage_all_tenants(self):"},{"line_number":60,"context_line":"        # Get usage for all tenants"},{"line_number":61,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":62,"context_line":"            self.adm_client.list_tenant_usages, 30,"},{"line_number":63,"context_line":"            start\u003dself.start, end\u003dself.end, detailed\u003d\"1\")[\u0027tenant_usages\u0027][0]"},{"line_number":64,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_70be0601","line":62,"in_reply_to":"ba15a1d1_2d9b5bcb","updated":"2015-09-14 06:00:52.000000000","message":"Thank you for your explanation. I misunderstood the meaning of the value :-P\nI feel it\u0027s good to add a comment for the meaning of the waiting for better understanding this code and value.","commit_id":"ed573bddf24d9a42a22a2e648d4775b646ede954"},{"author":{"_account_id":16297,"name":"takmatsu","email":"takeaki.matsumoto@ntt.com","username":"takmatsu"},"change_message_id":"e1801af80f4fc6ffaba9a29af7fb9651ad0a3cb5","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def test_list_usage_all_tenants(self):"},{"line_number":60,"context_line":"        # Get usage for all tenants"},{"line_number":61,"context_line":"        tenant_usage \u003d self.call_until_valid("},{"line_number":62,"context_line":"            self.adm_client.list_tenant_usages, 30,"},{"line_number":63,"context_line":"            start\u003dself.start, end\u003dself.end, detailed\u003d\"1\")[\u0027tenant_usages\u0027][0]"},{"line_number":64,"context_line":"        self.assertEqual(len(tenant_usage), 8)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_2d9b5bcb","line":62,"in_reply_to":"ba15a1d1_e9cebab3","updated":"2015-09-14 04:21:45.000000000","message":"I also think so.\nBut this wait until getting the reflected response after building VM is  finished, so CONF.compute.build_timeout is too long.","commit_id":"ed573bddf24d9a42a22a2e648d4775b646ede954"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"4850c37f2d3b5eba7ca3257f84370c4f077373f1","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        # Create a server in the demo tenant"},{"line_number":37,"context_line":"        cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":38,"context_line":"        time.sleep(2)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        now \u003d datetime.datetime.now()"},{"line_number":41,"context_line":"        cls.start \u003d cls._parse_strtime(now - datetime.timedelta(days\u003d1))"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_8fee0221","side":"PARENT","line":38,"updated":"2015-09-14 16:51:19.000000000","message":"If the time.sleep was really required, it means that the tests would now run in ~VALID_WAIT seconds instead of 2 seconds.","commit_id":"c10a57d3434f2ec3556be2d1c315fd408c14038e"}]}
