]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
s3tests: send raw http requests to test redirects
authorYehuda Sadeh <yehuda@inktank.com>
Wed, 14 Jan 2015 00:46:33 +0000 (16:46 -0800)
committerYehuda Sadeh <yehuda@inktank.com>
Thu, 22 Jan 2015 23:21:46 +0000 (15:21 -0800)
Since we fixed the rgw redirect code, it turns out that boto actually
follows on them. We just want to check if redirect is sent.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
requirements.txt
s3tests/functional/test_s3.py

index 81e93e94a7f8893d9e811fefd7416b6aa6840f5a..9c294dcd3c1fecdb0de7e7d1fe3d74694fb0fd3d 100644 (file)
@@ -8,3 +8,4 @@ isodate >=0.4.4
 requests ==0.14.0
 pytz >=2011k
 ordereddict
+httplib2
index 0d7eff3a72d24323384bd21255e3e1729944d1bf..ab02f1d074ed4b99fe8cc99c29dfb70d673d775e 100644 (file)
@@ -20,6 +20,7 @@ import hmac
 import sha
 import pytz
 import json
+import httplib2
 
 import xml.etree.ElementTree as ET
 
@@ -5029,6 +5030,21 @@ def check_can_test_multiregion():
     if not targets.main.master or len(targets.main.secondaries) == 0:
         raise SkipTest
 
+def create_presigned_url(conn, method, bucket_name, key_name, expiration):
+    return conn.generate_url(expires_in=expiration,
+        method=method,
+        bucket=bucket_name,
+        key=key_name,
+        query_auth=True,
+    )
+
+def send_raw_http_request(conn, method, bucket_name, key_name, follow_redirects = False):
+    url = create_presigned_url(conn, method, bucket_name, key_name, 3600)
+    print url
+    h = httplib2.Http()
+    h.follow_redirects = follow_redirects
+    return h.request(url, method)
+
 @attr(resource='bucket')
 @attr(method='get')
 @attr(operation='create on one region, access in another')
@@ -5043,12 +5059,11 @@ def test_region_bucket_create_secondary_access_remove_master():
         conn = r.connection
         bucket = get_new_bucket(r)
 
-        e = assert_raises(boto.exception.S3ResponseError, master_conn.get_bucket, bucket.name)
-        eq(e.status, 301)
-
-        e = assert_raises(boto.exception.S3ResponseError, master_conn.delete_bucket, bucket.name)
-        eq(e.status, 301)
+        r, content = send_raw_http_request(master_conn, 'GET', bucket.name, '', follow_redirects = False)
+        eq(r.status, 301)
 
+        r, content = send_raw_http_request(master_conn, 'DELETE', bucket.name, '', follow_redirects = False)
+        eq(r.status, 301)
 
         conn.delete_bucket(bucket)
 
@@ -5069,11 +5084,11 @@ def test_region_bucket_create_master_access_remove_secondary():
 
         region_sync_meta(targets.main, master)
 
-        e = assert_raises(boto.exception.S3ResponseError, conn.get_bucket, bucket.name)
-        eq(e.status, 301)
+        r, content = send_raw_http_request(conn, 'GET', bucket.name, '', follow_redirects = False)
+        eq(r.status, 301)
 
-        e = assert_raises(boto.exception.S3ResponseError, conn.delete_bucket, bucket.name)
-        eq(e.status, 301)
+        r, content = send_raw_http_request(conn, 'DELETE', bucket.name, '', follow_redirects = False)
+        eq(r.status, 301)
 
         master_conn.delete_bucket(bucket)
         region_sync_meta(targets.main, master)