)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"6f734086a60575e575b1d40c80d12b7c60d83190","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ashley \u003cahandy@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-03 16:06:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP:  Add Additonal Tempest Cases"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Missing test case coverage for temp url; this includes creation"},{"line_number":10,"context_line":"of temp url and GET, PUT, DELETE of object"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9abb7d3a_ec544655","line":7,"updated":"2016-06-03 16:44:22.000000000","message":"This needs to be more descriptive. Perhaps:\n\n\"Add test coverage for temp url.\"\n\n\nThe reason why is - I saw the notification in IRC and it was just\n\n[12:06] \u003c openstackgerrit\u003e Ashley Handy proposed openstack/tempest: WIP:  Add Additonal Tempest\n                           Cases  https://review.openstack.org/319456\n\nWhich is not that descriptive.","commit_id":"72e17c09c5c6076c48490eb9acb990238f811eb2"}],"tempest/api/object_storage/test_object_temp_url.py":[{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        metadata \u003d {\u0027Temp-URL-Key\u0027: cls.key}"},{"line_number":43,"context_line":"        cls.metadatas.append(metadata)"},{"line_number":44,"context_line":"        cls.account_client.create_account_metadata(metadata\u003dmetadata)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        # create an object"},{"line_number":47,"context_line":"        cls.object_name \u003d data_utils.rand_name(name\u003d\u0027ObjectTemp\u0027)"},{"line_number":48,"context_line":"        cls.content \u003d data_utils.arbitrary_string(size\u003dlen(cls.object_name),"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_33129259","line":45,"updated":"2016-05-23 19:55:33.000000000","message":"Let\u0027s setup both keys here in this method.  Both key1 and key2.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def setUp(self):"},{"line_number":64,"context_line":"        super(ObjectTempUrlTest, self).setUp()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _get_key2(self):"},{"line_number":67,"context_line":"        key2 \u003d \u0027Meta2-\u0027"},{"line_number":68,"context_line":"        metadata \u003d {\u0027Temp-URL-Key-2\u0027: key2}"},{"line_number":69,"context_line":"        self.account_client.create_account_metadata(metadata\u003dmetadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b37202af","line":66,"updated":"2016-05-23 19:55:33.000000000","message":"This method should go away now that key2 is being setup above.   All of the keys would then be referenced off of self.*","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        return key2"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_expected_key(self):"},{"line_number":75,"context_line":"        account_client_metadata, _ \u003d \\"},{"line_number":76,"context_line":"         self.account_client.list_account_metadata()"},{"line_number":77,"context_line":"        self.assertIn(\u0027x-account-meta-temp-url-key-2\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_33c3b28c","line":74,"updated":"2016-05-23 19:55:33.000000000","message":"remove this method, see later comment about validating account metadata.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        return url"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _validate_account_metadata(self, expected_key, key2):"},{"line_number":106,"context_line":"        expected_key \u003d self._get_expected_key()"},{"line_number":107,"context_line":"        validation \u003d self.assertEqual(expected_key,"},{"line_number":108,"context_line":"                                      key2)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_331f320b","line":105,"updated":"2016-05-23 19:55:33.000000000","message":"I would update this method to check to ensure that all 2 keys are stored.  And I would call this method from the resource_setup above after metadata has been set.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # get a temp URL for the created object"},{"line_number":118,"context_line":"        url \u003d self._get_temp_url(self.container_name,"},{"line_number":119,"context_line":"                                 self.object_name, \u0027GET\u0027,"},{"line_number":120,"context_line":"                                 expires, self.key)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # trying to get object using temp url within expiry time"},{"line_number":123,"context_line":"        resp, _ \u003d self.object_client.get(url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_13caee6e","line":120,"updated":"2016-05-23 19:55:33.000000000","message":"This may need to be something like self.account_key since we will have both account and container keys in this suite.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    @test.idempotent_id(\u0027671f9583-86bd-4128-a034-be282a68c5d8\u0027)"},{"line_number":127,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":128,"context_line":"    def test_get_object_using_temp_url_key_2(self):"},{"line_number":129,"context_line":"        _key2_ \u003d self._get_key2()"},{"line_number":130,"context_line":"        expected_key \u003d self._get_expected_key()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # make sure the metadata has been set"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b39fa264","line":129,"updated":"2016-05-23 19:55:33.000000000","message":"This would be a self.account_key2 or something.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        # trying to get object using temp url within expiry time"},{"line_number":198,"context_line":"        resp, _ \u003d self.object_client.get(inline_url)"},{"line_number":199,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027GET\u0027)"},{"line_number":200,"context_line":"        self.assertIn(\u0027content-disposition\u0027, resp)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @test.idempotent_id(\u002794309936-10a5-11e6-a148-3e1d05defe78\u0027)"},{"line_number":203,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b3c5e20b","line":200,"updated":"2016-05-23 19:55:33.000000000","message":"check on tempest master on the content-disposition to see if this is accurate.   I think it is.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        # We should have a common method for validating account"},{"line_number":253,"context_line":"        # metadata to a value, the following 6-7 lines of"},{"line_number":254,"context_line":"        # code would go into that method..."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":257,"context_line":"        url \u003d self._get_temp_url(self.container_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_d3eb4677","line":254,"updated":"2016-05-23 19:55:33.000000000","message":"clean up this comment based on your latest updates from review.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    @test.idempotent_id(\u00276df5ecfc-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":265,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":266,"context_line":"    def test_conditional_put_none_match_header_temp_url(self):"},{"line_number":267,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":268,"context_line":"        # using a different object to verify"},{"line_number":269,"context_line":"        if_none_match_object \u003d data_utils.rand_name(name\u003d\u0027match\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_16477c1e","line":266,"updated":"2016-05-23 19:55:33.000000000","message":"Let\u0027s remove this test case, it should be a duplicate logic wise with the basic if-none-match in the object services.   Maybe check with Peter on this...","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"1a4ece3464f7ab3edc186ec394703f3065abdf8f","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        # comparing the etags"},{"line_number":293,"context_line":"        self.assertEqual(resp2[\u0027etag\u0027], resp1[\u0027etag\u0027])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    @test.idempotent_id(\u0027b8be73e4-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":296,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":297,"context_line":"    def test_conditional_get_match_header_temp_url(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a58dadd4","line":294,"updated":"2016-05-23 14:22:06.000000000","message":"We should add a test case that covers the \"incoming\" and \"outgoing\" allow headers for Temp URL.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"ab9dc8148563a28c85f11d5ecc34b5d90336cbd1","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        # comparing the etags"},{"line_number":293,"context_line":"        self.assertEqual(resp2[\u0027etag\u0027], resp1[\u0027etag\u0027])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    @test.idempotent_id(\u0027b8be73e4-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":296,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":297,"context_line":"    def test_conditional_get_match_header_temp_url(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_85618907","line":294,"in_reply_to":"bab6814e_a58dadd4","updated":"2016-05-23 14:23:37.000000000","message":"Also should add a test case for incoming / outgoing remove headers...","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":21773,"name":"Ashley Handy","email":"ahandy@us.ibm.com","username":"ahandy"},"change_message_id":"4f53032650ad41f8b454893c41d7cd00a9c0c3dd","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        # comparing the etags"},{"line_number":293,"context_line":"        self.assertEqual(resp2[\u0027etag\u0027], resp1[\u0027etag\u0027])"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    @test.idempotent_id(\u0027b8be73e4-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":296,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":297,"context_line":"    def test_conditional_get_match_header_temp_url(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_9f66df27","line":294,"in_reply_to":"bab6814e_a58dadd4","updated":"2016-06-14 13:59:21.000000000","message":"Reminder that this will be temporary deferred to another ticket","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    @test.idempotent_id(\u0027b8be73e4-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":296,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":297,"context_line":"    def test_conditional_get_match_header_temp_url(self):"},{"line_number":298,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":299,"context_line":"        # using a different object to verify"},{"line_number":300,"context_line":"        if_match_object \u003d data_utils.rand_name(name\u003d\u0027match\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_765408ca","line":297,"updated":"2016-05-23 19:55:33.000000000","message":"Same comment as if-none-match.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":21773,"name":"Ashley Handy","email":"ahandy@us.ibm.com","username":"ahandy"},"change_message_id":"4f53032650ad41f8b454893c41d7cd00a9c0c3dd","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    @test.idempotent_id(\u0027b8be73e4-0e1c-11e6-a148-3e1d05defe78\u0027)"},{"line_number":296,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":297,"context_line":"    def test_conditional_get_match_header_temp_url(self):"},{"line_number":298,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":299,"context_line":"        # using a different object to verify"},{"line_number":300,"context_line":"        if_match_object \u003d data_utils.rand_name(name\u003d\u0027match\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_1f730fe9","line":297,"in_reply_to":"bab6814e_765408ca","updated":"2016-06-14 13:59:21.000000000","message":"Same as above","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b068fec06b2335b3c4ff01d4f92e9dc19ec575ab","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        super(ObjectTempUrlTest, cls).resource_cleanup()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def setUp(self):"},{"line_number":78,"context_line":"        super(ObjectTempUrlTest, self).setUp()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Calculate the expiration time for the temp URL"},{"line_number":81,"context_line":"    def _get_expiry_date(self, expiration_time\u003d1000):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_a868a022","line":78,"updated":"2016-06-15 21:53:13.000000000","message":"do we need this method anymore?","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b7137084cb2c907262b905d2ee4155e5bdae569b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        super(ObjectTempUrlTest, cls).resource_cleanup()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def setUp(self):"},{"line_number":78,"context_line":"        super(ObjectTempUrlTest, self).setUp()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Calculate the expiration time for the temp URL"},{"line_number":81,"context_line":"    def _get_expiry_date(self, expiration_time\u003d1000):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_63f6d9fa","line":78,"updated":"2016-06-15 21:54:34.000000000","message":"don\u0027t need this method","commit_id":"dd22f5a4ce2651f90e92ca28da2ec3b2b4305c04"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _get_temp_url(self, container, object_name, method, expires,"},{"line_number":72,"context_line":"                      key):"},{"line_number":73,"context_line":"        \"\"\"Object Temp URL from a path, method, expiration time, and key\"\"\""},{"line_number":74,"context_line":"        path \u003d \u0027%s/%s/%s\u0027 % ("},{"line_number":75,"context_line":"            urlparse.urlparse(self.object_client.base_url).path,"},{"line_number":76,"context_line":"            container, object_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_9d4de39b","line":73,"updated":"2016-09-20 22:08:14.000000000","message":"Generates an Object Temp URL from an object name, method, expiration time, and key","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return url"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _get_object_with_temp_url(self, key, url_mod\u003d\u0027\u0027):"},{"line_number":88,"context_line":"        \"\"\"GET on temp URL for multiple tests using different keys/modifiers\"\"\""},{"line_number":89,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        # get a temp URL for the created object"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_2092e29f","line":88,"updated":"2016-09-20 22:08:14.000000000","message":"GET on a*","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":112,"context_line":"                                 expires, key)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # trying to put random data in the object using temp url"},{"line_number":115,"context_line":"        resp, body \u003d self.object_client.put(url, new_data)"},{"line_number":116,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # Testing a HEAD on this Temp URL"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_83a100ac","line":115,"updated":"2016-09-20 22:08:14.000000000","message":"do we need the None?","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"}],"tempest/api/object_storage/test_object_temp_url_negative.py":[{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bab6814e_5668e487","line":44,"updated":"2016-05-23 19:55:33.000000000","message":"Same key comment as the positive cases, let\u0027s store aand validate the keys here.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"e7cababd87a6656f0857d09b4680a3b45ff23a4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bab6814e_da2d27ff","line":191,"updated":"2016-05-23 15:46:30.000000000","message":"These _removed() cases will need to be redone.   We cannot assume any tempest configuration in these tests and it has to be written in such a way where it can run against various configuration values.\n\nI would consider the following:\n\n1) Collapse these into a single test case\n2) Rename them into test_unallowed_method case\n3) Redo the comments to make the intention of this case clearer\n4) Have the code query to determine set of unallowed methods and run each of them checking for an unauthorized.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"e7cababd87a6656f0857d09b4680a3b45ff23a4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bab6814e_1a0b2f7e","line":340,"updated":"2016-05-23 15:46:30.000000000","message":"This comment shows up throughout the code, but it\u0027s only really applicable for the case where we validate timeouts.   So I would remove the \"for example\" portion unless it matters for the test case.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bab6814e_361f200b","line":390,"updated":"2016-05-23 19:55:33.000000000","message":"Let\u0027s remove.   We\u0027ll do the incoming headers / outgoing headers with the allow_methods stuff.  Let\u0027s make it a separate commit.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"8b5400cea2c2ba98b1d0b882c2681af6bc152de4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bab6814e_b6d15032","line":423,"updated":"2016-05-23 19:55:33.000000000","message":"remove.","commit_id":"9897a57cf789927883b2e989672721ee81a0cbd6"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b068fec06b2335b3c4ff01d4f92e9dc19ec575ab","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":25,"context_line":"from tempest import test"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ObjectTempUrlNegativeTest(base.BaseObjectTest):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_899c4e6b","line":27,"updated":"2016-06-15 21:53:13.000000000","message":"not used","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b068fec06b2335b3c4ff01d4f92e9dc19ec575ab","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        super(ObjectTempUrlNegativeTest, cls).resource_cleanup()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def setUp(self):"},{"line_number":60,"context_line":"        super(ObjectTempUrlNegativeTest, self).setUp()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _get_expiry_date(self, expiration_time\u003d1000):"},{"line_number":63,"context_line":"        return int(time.time() + expiration_time)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_e3180978","line":60,"updated":"2016-06-15 21:53:13.000000000","message":"can remove this method","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def setUp(self):"},{"line_number":60,"context_line":"        super(ObjectTempUrlNegativeTest, self).setUp()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _get_expiry_date(self, expiration_time\u003d1000):"},{"line_number":63,"context_line":"        return int(time.time() + expiration_time)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_temp_url(self, container, object_name, method, expires,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_996d409c","line":62,"updated":"2016-06-15 19:30:47.000000000","message":"Isn\u0027t this a 1000 second default?   That seems awfully high.   Maybe we default to 1 second.","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @test.idempotent_id(\u00275a583aca-c804-41ba-9d9a-e7be132bdf0b\u0027)"},{"line_number":81,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":82,"context_line":"    def test_get_object_after_expiration_time(self):"},{"line_number":83,"context_line":"        expires \u003d self._get_expiry_date(expiration_time\u003d2)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # get a temp URL for the created object"},{"line_number":86,"context_line":"        url \u003d self._get_temp_url(self.container_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_392a4c30","line":83,"updated":"2016-06-15 19:30:47.000000000","message":"Change to 1 second","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                 expires, self.container_key)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # Delaying time for 5 seconds..."},{"line_number":91,"context_line":"        time.sleep(5)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # oh no an exception!"},{"line_number":94,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_19d31061","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":12},"updated":"2016-06-15 19:30:47.000000000","message":"I like this test case, but I would recommend reducing the expiration time and reducing the overall delay.    Maybe 1 second expiration and 2 second delay?","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # Delaying time for 5 seconds..."},{"line_number":91,"context_line":"        time.sleep(5)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # oh no an exception!"},{"line_number":94,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"},{"line_number":95,"context_line":"                          self.object_client.get, url)"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_79db3450","line":93,"updated":"2016-06-15 19:30:47.000000000","message":"Picky, but I would remove this comment","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    @test.idempotent_id(\u0027aab59100-1854-11e6-b6ba-3e1d05defe78\u0027)"},{"line_number":99,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":100,"context_line":"    def test_put_object_after_expiration_time(self):"},{"line_number":101,"context_line":"        expires \u003d self._get_expiry_date(expiration_time\u003d2)"},{"line_number":102,"context_line":"        rand_data \u003d data_utils.arbitrary_string(size\u003dlen(self.object_name),"},{"line_number":103,"context_line":"                                                base_text\u003dself.object_name)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_59291837","line":101,"updated":"2016-06-15 19:30:47.000000000","message":"change to 1 sec","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                 expires, self.container_key)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        # Delaying time for 5 seconds..."},{"line_number":111,"context_line":"        time.sleep(5)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # oh no an exception!"},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_d91508e6","line":111,"updated":"2016-06-15 19:30:47.000000000","message":"change to 2 seconds","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        time.sleep(5)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # oh no an exception!"},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"},{"line_number":115,"context_line":"                          self.object_client.put, url,"},{"line_number":116,"context_line":"                          rand_data, headers\u003dNone)"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_b9e59c0b","line":114,"updated":"2016-06-15 19:30:47.000000000","message":"Picky, but I would remove this comment","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    @test.idempotent_id(\u0027bb23adce-1854-11e6-b6ba-3e1d05defe78\u0027)"},{"line_number":120,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":121,"context_line":"    def test_delete_object_after_expiration_time(self):"},{"line_number":122,"context_line":"        expires \u003d self._get_expiry_date(expiration_time\u003d2)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        # new object with data used for delete"},{"line_number":125,"context_line":"        things \u003d data_utils.rand_name(name\u003d\u0027ObjectTemp2\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_d9ece8f5","line":122,"updated":"2016-06-15 19:30:47.000000000","message":"1 second","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                                 expires, self.container_key)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        # Delaying time for 5 seconds..."},{"line_number":138,"context_line":"        time.sleep(5)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # oh no an exception!"},{"line_number":141,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_19bdd0d7","line":138,"updated":"2016-06-15 19:30:47.000000000","message":"2 seconds","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    @test.idempotent_id(\u0027c91cb5b0-1854-11e6-b6ba-3e1d05defe78\u0027)"},{"line_number":146,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":147,"context_line":"    def test_head_object_after_expiration_time(self):"},{"line_number":148,"context_line":"        expires \u003d self._get_expiry_date(expiration_time\u003d2)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        url \u003d self._get_temp_url(self.container_name,"},{"line_number":151,"context_line":"                                 self.object_name, \u0027HEAD\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_59b758f5","line":148,"updated":"2016-06-15 19:30:47.000000000","message":"1 second","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"f900822d75c5c99868063a560863cfc9b5c49044","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                 expires, self.container_key)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Delaying time for 5 seconds..."},{"line_number":155,"context_line":"        time.sleep(5)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # oh no an exception!"},{"line_number":158,"context_line":"        self.assertRaises(lib_exc.Unauthorized,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_d9c34856","line":155,"updated":"2016-06-15 19:30:47.000000000","message":"2 seconds","commit_id":"a554d84aac21a55befc2c5cc357e15d9e9f9c7ca"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b7137084cb2c907262b905d2ee4155e5bdae569b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":25,"context_line":"from tempest import test"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class ObjectTempUrlNegativeTest(base.BaseObjectTest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_837ae575","line":27,"updated":"2016-06-15 21:54:34.000000000","message":"remove config/CONF since it\u0027s unused","commit_id":"dd22f5a4ce2651f90e92ca28da2ec3b2b4305c04"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"b7137084cb2c907262b905d2ee4155e5bdae569b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        super(ObjectTempUrlNegativeTest, cls).resource_cleanup()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def setUp(self):"},{"line_number":60,"context_line":"        super(ObjectTempUrlNegativeTest, self).setUp()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _get_expiry_date(self, expiration_time\u003d1):"},{"line_number":63,"context_line":"        return int(time.time() + expiration_time)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_e38be966","line":60,"updated":"2016-06-15 21:54:34.000000000","message":"don\u0027t need this method","commit_id":"dd22f5a4ce2651f90e92ca28da2ec3b2b4305c04"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        cls.container_client.update_container_metadata(cls.container_name,"},{"line_number":40,"context_line":"                                                       metadata\u003dmetadata)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        cls.object_name \u003d data_utils.rand_name(name\u003d\u0027ObjectTemp\u0027)"},{"line_number":43,"context_line":"        cls.content \u003d data_utils.arbitrary_string(size\u003dlen(cls.object_name),"},{"line_number":44,"context_line":"                                                  base_text\u003dcls.object_name)"},{"line_number":45,"context_line":"        cls.object_client.create_object(cls.container_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_63d794ed","line":42,"updated":"2016-09-20 22:08:14.000000000","message":"add comment # create object","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    @test.idempotent_id(\u00275a583aca-c804-41ba-9d9a-e7be132bdf0b\u0027)"},{"line_number":76,"context_line":"    @test.requires_ext(extension\u003d\u0027tempurl\u0027, service\u003d\u0027object\u0027)"},{"line_number":77,"context_line":"    def test_get_object_after_expiration_time(self):"},{"line_number":78,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # get a temp URL for the created object"},{"line_number":81,"context_line":"        url \u003d self._get_temp_url(self.container_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_4321b8fa","line":78,"updated":"2016-09-20 22:08:14.000000000","message":"this is used in each test... can we pull out?","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        expires \u003d self._get_expiry_date()"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # new object with data used for delete"},{"line_number":118,"context_line":"        things \u003d data_utils.rand_name(name\u003d\u0027ObjectTemp2\u0027)"},{"line_number":119,"context_line":"        _data \u003d data_utils.arbitrary_string("},{"line_number":120,"context_line":"            size\u003dlen(things),"},{"line_number":121,"context_line":"            base_text\u003dthings)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_83ee6089","line":118,"updated":"2016-09-20 22:08:14.000000000","message":"s/things/object_name","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # new object with data used for delete"},{"line_number":118,"context_line":"        things \u003d data_utils.rand_name(name\u003d\u0027ObjectTemp2\u0027)"},{"line_number":119,"context_line":"        _data \u003d data_utils.arbitrary_string("},{"line_number":120,"context_line":"            size\u003dlen(things),"},{"line_number":121,"context_line":"            base_text\u003dthings)"},{"line_number":122,"context_line":"        self.object_client.create_object(self.container_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_23d74cc0","line":119,"updated":"2016-09-20 22:08:14.000000000","message":"be consistent in naming... e.g. L96 is called rand_data","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            size\u003dlen(things),"},{"line_number":121,"context_line":"            base_text\u003dthings)"},{"line_number":122,"context_line":"        self.object_client.create_object(self.container_name,"},{"line_number":123,"context_line":"                                         things, _data)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # get a temp URL for the created object"},{"line_number":126,"context_line":"        url \u003d self._get_temp_url(self.container_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_a398bc1c","line":123,"updated":"2016-09-20 22:08:14.000000000","message":"do we need to create_object? since it\u0027s done for us in resource_setup?","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"},{"author":{"_account_id":9622,"name":"Cindy Lu","email":"clu@us.ibm.com","username":"clu14"},"change_message_id":"04f59dbeb50ad9c42af9b8fce6de61026143b110","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        # this is the bad signature which is not"},{"line_number":189,"context_line":"        # the format of the original"},{"line_number":190,"context_line":"        bad_sig \u003d \u0027osdfisfnsofhif\u0027"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        # the invalid url where the bad signature"},{"line_number":193,"context_line":"        # is passed in"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_63a6b454","line":190,"updated":"2016-09-20 22:08:14.000000000","message":"call it bad_signature for clarity","commit_id":"badc6f36334d37400cb609442a570fc4e952c7be"}],"tempest/stress/driver.py":[{"author":{"_account_id":20553,"name":"Brian Ober","email":"bober@us.ibm.com","username":"ober37"},"change_message_id":"cce4c77380d1f1750ea49e9b0d62be47bcea89c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9abb7d3a_b8726fe1","updated":"2016-06-03 19:40:57.000000000","message":"I think you can revert this file back to its previous commit.   These changes aren\u0027t needed.","commit_id":"72e17c09c5c6076c48490eb9acb990238f811eb2"}]}
