)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"a9f4575b9348d7d92ba20e3e9c22e0f9d9467af2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add glance notifications tests for ceilometer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added ceilometer test for measurements:"},{"line_number":10,"context_line":"image.update, image.upload, image.delete, image.download, image.serve"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially implements: blueprint add-basic-ceilometer-tests"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"baada198_d83a4933","line":10,"updated":"2014-07-25 10:37:17.000000000","message":"Is there any list of these?\nI\u0027d like to check whether this is enough for glance notifications.","commit_id":"8f4686e0719d3d67119851354eb553eab398356d"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"8ad84ddfa7ad4506ed19e2b54ae9aa10d77568cc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add glance notifications tests for ceilometer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added ceilometer test for measurements:"},{"line_number":10,"context_line":"image.update, image.upload, image.delete, image.download, image.serve"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially implements: blueprint add-basic-ceilometer-tests"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"baada198_79693fbf","line":10,"in_reply_to":"baada198_7eabe570","updated":"2014-07-25 11:42:21.000000000","message":"Thanks!,\nBut I think it\u0027s good to write the reason why we don\u0027t need image and image.size here.","commit_id":"8f4686e0719d3d67119851354eb553eab398356d"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"4ccde9901815f8e9f3f8b24193bcce2826b5e074","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add glance notifications tests for ceilometer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added ceilometer test for measurements:"},{"line_number":10,"context_line":"image.update, image.upload, image.delete, image.download, image.serve"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially implements: blueprint add-basic-ceilometer-tests"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"baada198_7eabe570","line":10,"in_reply_to":"baada198_d83a4933","updated":"2014-07-25 11:27:24.000000000","message":"Of course, all measurements in this site http://docs.openstack.org/developer/ceilometer/measurements.html","commit_id":"8f4686e0719d3d67119851354eb553eab398356d"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"9309de09292282233fd3115ed81cfc1760293060","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Added ceilometer test for measurements:"},{"line_number":10,"context_line":"image.update, image.upload, image.delete, image.download, image.serve"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"measurements: image, image.size are not added to tests because they "},{"line_number":13,"context_line":"have status \u0027both\u0027, these measurements are pollster and notification"},{"line_number":14,"context_line":"ones at the same time."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"baada198_d32f513c","line":12,"updated":"2014-07-28 10:47:09.000000000","message":"nit, white space","commit_id":"80ee4e12a1d621ac41f22d3226822930a1b59a4f"}],"etc/tempest.conf.sample":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"2a4c1aff50bffe5fccb585572082e7b9999a2f82","unresolved":false,"context_lines":[{"line_number":835,"context_line":"# value)"},{"line_number":836,"context_line":"#endpoint_type\u003dpublicURL"},{"line_number":837,"context_line":""},{"line_number":838,"context_line":"# Timeout for add a record in ceilometer database. (integer"},{"line_number":839,"context_line":"# value)"},{"line_number":840,"context_line":"#recording_timeout\u003d60"},{"line_number":841,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAXX%2F%2F6b0%3D","line":838,"updated":"2014-04-25 11:17:37.000000000","message":"Is it in second or mins?","commit_id":"381a0f276d47775217db5b40b90af575830e311a"}],"tempest/api/telemetry/base.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c00dd094f5d1827af72fa9d51e796d465f4e84f7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def create_image(cls):"},{"line_number":71,"context_line":"        resp, body \u003d cls.image_client.create_image("},{"line_number":72,"context_line":"            data_utils.rand_name(\u0027image\u0027), container_format\u003d\u0027bare\u0027,"},{"line_number":73,"context_line":"            disk_format\u003d\u0027raw\u0027, visibility\u003d\u0027public\u0027)"},{"line_number":74,"context_line":"        if resp.status \u003d\u003d 201:"},{"line_number":75,"context_line":"            cls.image_ids.append(body[\u0027id\u0027])"},{"line_number":76,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_8d1691a5","line":73,"updated":"2014-06-21 07:10:27.000000000","message":"Does it needs to be public ?","commit_id":"b14510f385e317a72ab5f9bd2e9e7ac2939bf7e2"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"5453dd543e9b8372bff035d0a6f81ae22b046030","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def create_image(cls):"},{"line_number":71,"context_line":"        resp, body \u003d cls.image_client.create_image("},{"line_number":72,"context_line":"            data_utils.rand_name(\u0027image\u0027), container_format\u003d\u0027bare\u0027,"},{"line_number":73,"context_line":"            disk_format\u003d\u0027raw\u0027, visibility\u003d\u0027public\u0027)"},{"line_number":74,"context_line":"        if resp.status \u003d\u003d 201:"},{"line_number":75,"context_line":"            cls.image_ids.append(body[\u0027id\u0027])"},{"line_number":76,"context_line":"        return resp, body"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_c4d92f86","line":73,"in_reply_to":"1ae5cdf2_8d1691a5","updated":"2014-06-23 09:42:20.000000000","message":"No, this not necessarily. I corrected this. Thanks for comment.","commit_id":"b14510f385e317a72ab5f9bd2e9e7ac2939bf7e2"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"3fd75f3d5e3add14eb332d8d511d128be896d7a4","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":101,"context_line":"        while timeutils.delta_seconds(start, timeutils.utcnow()) \u003c timeout:"},{"line_number":102,"context_line":"            resp, body \u003d self.telemetry_client.list_samples(metric, query)"},{"line_number":103,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":104,"context_line":"            if body:"},{"line_number":105,"context_line":"                return resp, body"},{"line_number":106,"context_line":"            time.sleep(CONF.compute.build_interval)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_f881a3fa","line":103,"updated":"2014-06-27 20:05:16.000000000","message":"Not necessary.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"d3685e84d170291368be33f9c78342d0077b7c45","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":101,"context_line":"        while timeutils.delta_seconds(start, timeutils.utcnow()) \u003c timeout:"},{"line_number":102,"context_line":"            resp, body \u003d self.telemetry_client.list_samples(metric, query)"},{"line_number":103,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":104,"context_line":"            if body:"},{"line_number":105,"context_line":"                return resp, body"},{"line_number":106,"context_line":"            time.sleep(CONF.compute.build_interval)"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_cdc49494","line":103,"in_reply_to":"1ae5cdf2_f881a3fa","updated":"2014-07-02 14:52:37.000000000","message":"In this method we are not just waiting for samples, but also checking that ceilometer api returns 200 response code on request. This is part of the verification of ceilometer api.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"8498501ff4735dabdff9f328e5f83328735b7f79","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def tearDownClass(cls):"},{"line_number":87,"context_line":"        cls.cleanup_resources(cls.telemetry_client.delete_alarm, cls.alarm_ids)"},{"line_number":88,"context_line":"        cls.cleanup_resources(cls.servers_client.delete_server, cls.server_ids)"},{"line_number":89,"context_line":"        cls.cleanup_resources(cls.image_client.delete_image, cls.image_ids)"},{"line_number":90,"context_line":"        cls.clear_isolated_creds()"},{"line_number":91,"context_line":"        super(BaseTelemetryTest, cls).tearDownClass()"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_81081cdb","line":89,"updated":"2014-07-07 18:04:10.000000000","message":"So I\u0027m ok with doing this, but I\u0027m wondering why? To me it makes more sense to just do the deletes as an addcleanup instead. It\u0027s not like image creates are\nsuper slow and we need to do it only once per class. The fact that we\u0027re making\nthem per test method instead of upfront in setupClass, means that there isn\u0027t\nany shared state that necessitates doing it in tearDownClass.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ca03e17f702afdc7c6a2c68329335216e5b29da5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def tearDownClass(cls):"},{"line_number":87,"context_line":"        cls.cleanup_resources(cls.telemetry_client.delete_alarm, cls.alarm_ids)"},{"line_number":88,"context_line":"        cls.cleanup_resources(cls.servers_client.delete_server, cls.server_ids)"},{"line_number":89,"context_line":"        cls.cleanup_resources(cls.image_client.delete_image, cls.image_ids)"},{"line_number":90,"context_line":"        cls.clear_isolated_creds()"},{"line_number":91,"context_line":"        super(BaseTelemetryTest, cls).tearDownClass()"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_1c64f947","line":89,"in_reply_to":"baada198_540b0b7c","updated":"2014-07-10 15:03:27.000000000","message":"No, I don\u0027t think there is any reason to do it separately for images. A valid follow up patch would be fixing the other non class scoped resource tearDowns to use addCleanup. But, as far as the image cleanups go there is no reason to do it in tearDownClass here.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"0795cbe14d26be127b14324b03baee0341a62f2a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def tearDownClass(cls):"},{"line_number":87,"context_line":"        cls.cleanup_resources(cls.telemetry_client.delete_alarm, cls.alarm_ids)"},{"line_number":88,"context_line":"        cls.cleanup_resources(cls.servers_client.delete_server, cls.server_ids)"},{"line_number":89,"context_line":"        cls.cleanup_resources(cls.image_client.delete_image, cls.image_ids)"},{"line_number":90,"context_line":"        cls.clear_isolated_creds()"},{"line_number":91,"context_line":"        super(BaseTelemetryTest, cls).tearDownClass()"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_540b0b7c","line":89,"in_reply_to":"baada198_81081cdb","updated":"2014-07-08 09:43:55.000000000","message":"Okay, Matthew. I agree. Can I move cleanup methods to tearDown in depending patch set?","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"8498501ff4735dabdff9f328e5f83328735b7f79","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":101,"context_line":"        while timeutils.delta_seconds(start, timeutils.utcnow()) \u003c timeout:"},{"line_number":102,"context_line":"            resp, body \u003d self.telemetry_client.list_samples(metric, query)"},{"line_number":103,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":104,"context_line":"            if body:"},{"line_number":105,"context_line":"                return resp, body"},{"line_number":106,"context_line":"            time.sleep(CONF.compute.build_interval)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_2f1f41b8","line":103,"updated":"2014-07-07 18:04:10.000000000","message":"What is the point of this change? There isn\u0027t any reason to do this.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"0795cbe14d26be127b14324b03baee0341a62f2a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":101,"context_line":"        while timeutils.delta_seconds(start, timeutils.utcnow()) \u003c timeout:"},{"line_number":102,"context_line":"            resp, body \u003d self.telemetry_client.list_samples(metric, query)"},{"line_number":103,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":104,"context_line":"            if body:"},{"line_number":105,"context_line":"                return resp, body"},{"line_number":106,"context_line":"            time.sleep(CONF.compute.build_interval)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_341857d2","line":103,"in_reply_to":"baada198_2f1f41b8","updated":"2014-07-08 09:43:55.000000000","message":"In exception message expected element is first arg, actual element is second arg.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ca03e17f702afdc7c6a2c68329335216e5b29da5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        start \u003d timeutils.utcnow()"},{"line_number":101,"context_line":"        while timeutils.delta_seconds(start, timeutils.utcnow()) \u003c timeout:"},{"line_number":102,"context_line":"            resp, body \u003d self.telemetry_client.list_samples(metric, query)"},{"line_number":103,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":104,"context_line":"            if body:"},{"line_number":105,"context_line":"                return resp, body"},{"line_number":106,"context_line":"            time.sleep(CONF.compute.build_interval)"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_fc12e5b2","line":103,"in_reply_to":"baada198_341857d2","updated":"2014-07-10 15:03:27.000000000","message":"Umm no, the default failure message for self.assertEquals(1, 2) is \u00271 !\u003d 2\u0027 there is no order there. These kinds of changes are pointless and I\u0027m inclined to start -2ing everytime I see them.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b73e58374cf5c7543af9c85adb739524082e4e73","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            data_utils.rand_name(\u0027ceilometer-instance\u0027),"},{"line_number":56,"context_line":"            CONF.compute.image_ref, CONF.compute.flavor_ref,"},{"line_number":57,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        if resp[\u0027status\u0027] \u003d\u003d \u0027202\u0027:"},{"line_number":59,"context_line":"            cls.server_ids.append(body[\u0027id\u0027])"},{"line_number":60,"context_line":"        return resp, body"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_78d81253","side":"PARENT","line":58,"updated":"2014-07-15 10:06:48.000000000","message":"I am so sorry, you probably already explained this (though I searched !) : why did you remove this response code check ?","commit_id":"1d30c65f0f224f53f0a9e325482e3bd73cbff9e8"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"ba86a50378034d2864d4ffdfceab29a4b81e89e8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            data_utils.rand_name(\u0027ceilometer-instance\u0027),"},{"line_number":56,"context_line":"            CONF.compute.image_ref, CONF.compute.flavor_ref,"},{"line_number":57,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":58,"context_line":"        if resp[\u0027status\u0027] \u003d\u003d \u0027202\u0027:"},{"line_number":59,"context_line":"            cls.server_ids.append(body[\u0027id\u0027])"},{"line_number":60,"context_line":"        return resp, body"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_0343f46c","side":"PARENT","line":58,"in_reply_to":"baada198_78d81253","updated":"2014-07-16 11:53:36.000000000","message":"If creating server failed, then tests failed in 54 line and line 58 is not necessary","commit_id":"1d30c65f0f224f53f0a9e325482e3bd73cbff9e8"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c21f565f1e11c7c501879c68e05248eb8acad788","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.nova_notifications \u003d [\u0027memory\u0027, \u0027vcpus\u0027, \u0027disk.root.size\u0027,"},{"line_number":41,"context_line":"                                  \u0027disk.ephemeral.size\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        cls.glance_notifications \u003d [\u0027image\u0027, \u0027image.size\u0027, \u0027image.update\u0027,"},{"line_number":44,"context_line":"                                    \u0027image.upload\u0027, \u0027image.delete\u0027]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        cls.glance_v2_notifications \u003d [\u0027image.download\u0027, \u0027image.serve\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_61cf1a2a","line":43,"updated":"2014-07-23 14:38:39.000000000","message":"image and image.size also come from pollsters so you probably don\u0027t want to check them.","commit_id":"6445c39539133e336d443e93fd413f5d2e72460d"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"89c732d9c23222baa5d007837e9ac7aa02dce8cf","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        cls.nova_notifications \u003d [\u0027memory\u0027, \u0027vcpus\u0027, \u0027disk.root.size\u0027,"},{"line_number":41,"context_line":"                                  \u0027disk.ephemeral.size\u0027]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        cls.glance_notifications \u003d [\u0027image\u0027, \u0027image.size\u0027, \u0027image.update\u0027,"},{"line_number":44,"context_line":"                                    \u0027image.upload\u0027, \u0027image.delete\u0027]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        cls.glance_v2_notifications \u003d [\u0027image.download\u0027, \u0027image.serve\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c7fab643","line":43,"in_reply_to":"baada198_61cf1a2a","updated":"2014-07-23 15:26:40.000000000","message":"Done","commit_id":"6445c39539133e336d443e93fd413f5d2e72460d"}],"tempest/api/telemetry/test_telemetry_notification_api.py":[{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"43bda3dbf3e2a6b129ec0902c6777c2490dbf5e0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        image_file \u003d six.StringIO(\u0027*\u0027 * random.randint(1024, 2048))"},{"line_number":51,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], image_file)"},{"line_number":52,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"},{"line_number":53,"context_line":"        self.image_client.delete_image(body[\u0027id\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        query \u003d \u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_cb33dc11","line":53,"updated":"2014-06-24 02:14:31.000000000","message":"why does it use both image v1 and v2 client in one testcase?","commit_id":"e5a8ef9f13eec3172f97237dbb12b97c02b56ba5"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"3e17d5e190b87048446cdfacdf628bffa3e06167","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        image_file \u003d six.StringIO(\u0027*\u0027 * random.randint(1024, 2048))"},{"line_number":51,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], image_file)"},{"line_number":52,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"},{"line_number":53,"context_line":"        self.image_client.delete_image(body[\u0027id\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        query \u003d \u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_278eb127","line":53,"in_reply_to":"1ae5cdf2_b3a0b043","updated":"2014-06-26 22:29:55.000000000","message":"Thanks for comments. I added checking for glance v2 api enabled. \nglance v2 api I use to get ceilometer notification: image.serve and image.download.","commit_id":"e5a8ef9f13eec3172f97237dbb12b97c02b56ba5"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a4d692a290a2592e1d534f8773af3a9adf277bf0","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        image_file \u003d six.StringIO(\u0027*\u0027 * random.randint(1024, 2048))"},{"line_number":51,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], image_file)"},{"line_number":52,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"},{"line_number":53,"context_line":"        self.image_client.delete_image(body[\u0027id\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        query \u003d \u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_b3a0b043","line":53,"in_reply_to":"1ae5cdf2_cb33dc11","updated":"2014-06-24 14:21:07.000000000","message":"Good question :)\n\nWhat if glance api_v2 is disabled as tempest configuration (image-feature-enabled.api_v2) allows ?","commit_id":"e5a8ef9f13eec3172f97237dbb12b97c02b56ba5"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"3c1d54ee08176baef4f5f2376f458cc2caccf792","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @classmethod"},{"line_number":27,"context_line":"    def setUpClass(cls):"},{"line_number":28,"context_line":"        if CONF.telemetry.too_slow_to_test:"},{"line_number":29,"context_line":"            raise cls.skipException(\"Ceilometer feature for fast work mysql \""},{"line_number":30,"context_line":"                                    \"is disabled\")"},{"line_number":31,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_59004a01","line":28,"updated":"2014-07-02 13:20:26.000000000","message":"Heh, I didn\u0027t realized that\u0027s what the feature flag was named, I like it.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"d24b36712fa5dedf1931d22b76040fce3eb17805","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @classmethod"},{"line_number":27,"context_line":"    def setUpClass(cls):"},{"line_number":28,"context_line":"        if CONF.telemetry.too_slow_to_test:"},{"line_number":29,"context_line":"            raise cls.skipException(\"Ceilometer feature for fast work mysql \""},{"line_number":30,"context_line":"                                    \"is disabled\")"},{"line_number":31,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_f2f3f39c","line":28,"in_reply_to":"baada198_59004a01","updated":"2014-07-02 14:47:01.000000000","message":"Name for this flag came up Sean :)","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"3fd75f3d5e3add14eb332d8d511d128be896d7a4","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def test_check_nova_notification(self):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp, body \u003d self.create_server()"},{"line_number":38,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        query \u003d (\u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027])"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_58a9b77a","line":38,"updated":"2014-06-27 20:05:16.000000000","message":"Not necessary.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"d24b36712fa5dedf1931d22b76040fce3eb17805","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def test_check_nova_notification(self):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp, body \u003d self.create_server()"},{"line_number":38,"context_line":"        self.assertEqual(202, resp.status)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        query \u003d (\u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027])"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_522c9f02","line":38,"in_reply_to":"1ae5cdf2_58a9b77a","updated":"2014-07-02 14:47:01.000000000","message":"Done","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"3c1d54ee08176baef4f5f2376f458cc2caccf792","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        query \u003d \u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if CONF.image_feature_enabled.api_v2:"},{"line_number":56,"context_line":"            self.image_client_v2.store_image(body[\u0027id\u0027], image_file)"},{"line_number":57,"context_line":"            self.image_client_v2.get_image_file(body[\u0027id\u0027])"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_79034e0d","line":55,"updated":"2014-07-02 13:20:26.000000000","message":"This block seems a bit weird to me. If you want to test separate v2 notifications just make that a separate test case. Then you can just skip the test if v2 isn\u0027t available. You can just abstract the shared image creation into a common method and use that. \n\nI think having an optional test path inside a method is something we want to avoid. It\u0027s much clearer if we break things up into smaller individual test cases.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"d24b36712fa5dedf1931d22b76040fce3eb17805","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        query \u003d \u0027resource\u0027, \u0027eq\u0027, body[\u0027id\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if CONF.image_feature_enabled.api_v2:"},{"line_number":56,"context_line":"            self.image_client_v2.store_image(body[\u0027id\u0027], image_file)"},{"line_number":57,"context_line":"            self.image_client_v2.get_image_file(body[\u0027id\u0027])"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_b2397b43","line":55,"in_reply_to":"baada198_79034e0d","updated":"2014-07-02 14:47:01.000000000","message":"Done\n\nI created two test instead of one (for v1 and v2 glance api). But I can\u0027t create a common image, because for v1 notification must delete image (notification: image.delete), but for  get v2 notifications need not deleted image, so I added  image creation in each test.","commit_id":"9db399875db45215547ada7f7c54288b78836b0a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"d5e310b66095eb071ae50c2b3263633fcf21456c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            self.await_samples(metric, query)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":43,"context_line":"    @test.services(\"image\")"},{"line_number":44,"context_line":"    def test_check_glance_v1_notifications(self):"},{"line_number":45,"context_line":"        _, body \u003d self.create_image()"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_b82780b5","line":43,"updated":"2014-07-03 07:03:38.000000000","message":"it also need a @testtools.skipIf for api_v1","commit_id":"debc9902483edc31bd9ae0b916f0403633b79218"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"c9a901d6740247f9da0da71e239dc33c8968b1c1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            self.await_samples(metric, query)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":43,"context_line":"    @test.services(\"image\")"},{"line_number":44,"context_line":"    def test_check_glance_v1_notifications(self):"},{"line_number":45,"context_line":"        _, body \u003d self.create_image()"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_ee6f72c3","line":43,"in_reply_to":"baada198_b82780b5","updated":"2014-07-03 08:08:24.000000000","message":"Done","commit_id":"debc9902483edc31bd9ae0b916f0403633b79218"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"42a4c59fc7ed95944cbdcbdf03b701f0735d23a8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    @testtools.skipIf(not CONF.image_feature_enabled.api_v2,"},{"line_number":59,"context_line":"                      \"Glance api v2 is disabled\")"},{"line_number":60,"context_line":"    def test_check_glance_v2_notifications(self):"},{"line_number":61,"context_line":"        _, body \u003d self.create_image()"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], \"file\")"},{"line_number":64,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_048805e6","line":61,"updated":"2014-07-03 09:27:00.000000000","message":"a little trouble: this function also depends on glance api v1. you may need create image using glance v2 client here. otherwise, it still mixed v1 and v2.","commit_id":"ca161cc3a7d1a1e70591b232684d4b4c5c293ca4"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"190c669eb4b56acaa09a72b381f3d85ea11eeedb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    @testtools.skipIf(not CONF.image_feature_enabled.api_v2,"},{"line_number":59,"context_line":"                      \"Glance api v2 is disabled\")"},{"line_number":60,"context_line":"    def test_check_glance_v2_notifications(self):"},{"line_number":61,"context_line":"        _, body \u003d self.create_image()"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], \"file\")"},{"line_number":64,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_bf992221","line":61,"in_reply_to":"baada198_048805e6","updated":"2014-07-03 09:48:59.000000000","message":"Done","commit_id":"ca161cc3a7d1a1e70591b232684d4b4c5c293ca4"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"93b484e8fdb3176ae934472aa93eee1867b0c8fa","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    @testtools.skipIf(not CONF.image_feature_enabled.api_v2,"},{"line_number":59,"context_line":"                      \"Glance api v2 is disabled\")"},{"line_number":60,"context_line":"    def test_check_glance_v2_notifications(self):"},{"line_number":61,"context_line":"        _, body \u003d self.create_image()"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.image_client_v2.store_image(body[\u0027id\u0027], \"file\")"},{"line_number":64,"context_line":"        self.image_client_v2.get_image_file(body[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_5fc5663a","line":61,"in_reply_to":"baada198_048805e6","updated":"2014-07-03 09:48:38.000000000","message":"oh, yes, one moment. Thank you.","commit_id":"ca161cc3a7d1a1e70591b232684d4b4c5c293ca4"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"8498501ff4735dabdff9f328e5f83328735b7f79","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                                    \"is disabled\")"},{"line_number":30,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":33,"context_line":"    @test.services(\"compute\")"},{"line_number":34,"context_line":"    def test_check_nova_notification(self):"},{"line_number":35,"context_line":"        _, body \u003d self.create_server()"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_6f15b99a","line":32,"updated":"2014-07-07 18:04:10.000000000","message":"The changes to this method are definitely outside the scope of this change.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"f4c71b19496fce7eb207d2d0376638e587fc2fbb","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                                    \"is disabled\")"},{"line_number":30,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":33,"context_line":"    @test.services(\"compute\")"},{"line_number":34,"context_line":"    def test_check_nova_notification(self):"},{"line_number":35,"context_line":"        _, body \u003d self.create_server()"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_b94954b9","line":32,"in_reply_to":"baada198_5f5bc32d","updated":"2014-07-10 18:25:36.000000000","message":"That\u0027t right. The moving of response checking to the telemetry clients should be done but that is a separate change or set of changes.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"0795cbe14d26be127b14324b03baee0341a62f2a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                                    \"is disabled\")"},{"line_number":30,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":33,"context_line":"    @test.services(\"compute\")"},{"line_number":34,"context_line":"    def test_check_nova_notification(self):"},{"line_number":35,"context_line":"        _, body \u003d self.create_server()"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_cf0148b0","line":32,"in_reply_to":"baada198_6f15b99a","updated":"2014-07-08 09:43:55.000000000","message":"I deleted asset because this commented David Kranz in 10 path set. I can to add to commit message about code refactoring.","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ca03e17f702afdc7c6a2c68329335216e5b29da5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                                    \"is disabled\")"},{"line_number":30,"context_line":"        super(TelemetryNotificationAPITestJSON, cls).setUpClass()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\"smoke\")"},{"line_number":33,"context_line":"    @test.services(\"compute\")"},{"line_number":34,"context_line":"    def test_check_nova_notification(self):"},{"line_number":35,"context_line":"        _, body \u003d self.create_server()"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_5f5bc32d","line":32,"in_reply_to":"baada198_cf0148b0","updated":"2014-07-10 15:03:27.000000000","message":"David\u0027s comment doesn\u0027t change the fact that the changes in this method having nothing to do with this commit. (he was also just talking about changing the order of the assertEquals) My issue here is changing the tag, adding a service tag decorator, and dropping the assert have nothing to do with the intent of this commit.\n\nIt\u0027s not just about documenting these changes in the commit message but also having single logical changes per commit. When we start mixing unrelated changes into a patch reverting or bisecting to fix a regression becomes more difficult. It\u0027s also \n\nFor reference see:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes","commit_id":"2d77f51824795e9675bc3d4a02e342c76cab3156"}],"tempest/config.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"2a4c1aff50bffe5fccb585572082e7b9999a2f82","unresolved":false,"context_lines":[{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    cfg.IntOpt(\u0027recording_timeout\u0027,"},{"line_number":559,"context_line":"               default\u003d60,"},{"line_number":560,"context_line":"               help\u003d\"Timeout for add a record in ceilometer database.\"),"},{"line_number":561,"context_line":"]"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXX%2F%2F6Qg%3D","line":560,"updated":"2014-04-25 11:17:37.000000000","message":"ditto","commit_id":"381a0f276d47775217db5b40b90af575830e311a"}]}
