Commit graph

270 commits

Author SHA1 Message Date
Andrew Gaul
ffdad9e22f Add test for querying location 2014-12-29 16:15:41 -08:00
Andrew Gaul
45c53c462d Handle idempotent and BucketAlreadyOwnedByYou
AWS S3 has two behaviors for recreating a bucket depending if you use
the us-standard or another region:

>>> bucket = conn.create_bucket('gaul-default', location=Location.DEFAULT)
>>> bucket = conn.create_bucket('gaul-default', location=Location.DEFAULT)
>>> bucket = conn.create_bucket('gaul-uswest', location=Location.USWest)
>>> bucket = conn.create_bucket('gaul-uswest', location=Location.USWest)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/boto/s3/connection.py", line 499, in create_bucket
    response.status, response.reason, body)
boto.exception.S3CreateError: S3CreateError: 409 Conflict
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>BucketAlreadyOwnedByYou</Code><Message>Your previous request to create the named bucket succeeded and you already own it.</Message><BucketName>gaul-uswest</BucketName><RequestId>24B6DC3170365CD7</RequestId><HostId>hUynMTyqc9WZFxAJ2RFK6P7BqmmeHHlMl9xL2NOy56xBUnOZCAlHqGvtMeGeAfVs</HostId></Error>

Additional discussion:

https://issues.apache.org/jira/browse/JCLOUDS-334
2014-12-22 21:05:27 -08:00
Andrew Gaul
9b17da16cd Test to find mismatched MD5
Also clarify the invalid digest test.
2014-12-22 20:26:39 -08:00
Andrew Gaul
673f7d7c44 Test empty and small multi-part uploads 2014-12-22 20:17:35 -08:00
Andrew Gaul
ca2c0dc283 Correctly generate non-mod 1024 parts in generator
Also move implementation to utils and add unit tests.
2014-12-22 20:16:25 -08:00
Yehuda Sadeh
8f6c109882 test_object_create_bad_authorization_incorrect: fixes
The test should expect BadSignature. Also, provide a key that does not
already exist on aws.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-12-16 12:56:53 -08:00
Alfredo Deza
abc9e67120 Revert "test_bucket_create_exists should fail on recreate"
This reverts commit c82649b635.

The suite does not support duality in behaviors (e.g.
US Standard vs. Regional behavior) so we adhere to US
Standard only.

Signed-off-by: Alfredo Deza <alfredo@deza.pe>
2014-12-15 10:41:59 -05:00
Ray Lv
085277338f s3tests: add regression test for bug #10311 - rgw: Object is deleted automatically if conditional PUT returns 412
Test for bug #10311

Signed-off-by: Ray Lv <raylv@yahoo-inc.com>
2014-12-15 16:47:34 +08:00
Yehuda Sadeh
c6043faa30 Merge pull request #23 from xylv/wip-test-issue-8562
s3tests: add conditional put test

Reviewed-by: Yehuda Sadeh <yehuda@redhat.com>
2014-12-12 10:42:54 -08:00
Alfredo Deza
f07b5206a6 Merge pull request #19 from andrewgaul/query-string-authorization-expiration
Test query string authorization expiration
2014-12-04 09:43:25 -05:00
Alfredo Deza
7b5a61fa7f Merge pull request #17 from andrewgaul/delete-object-non-existent-bucket
Test delete object on non-existent bucket
2014-12-04 09:37:11 -05:00
Alfredo Deza
405d96c379 Merge pull request #24 from andrewgaul/list-bucket
Improve list bucket invalid and bad auth tests
2014-12-04 09:32:08 -05:00
Alfredo Deza
81dc4f4b24 Merge pull request #9 from andrewgaul/bucket-create-exists
test_bucket_create_exists should fail on recreate
2014-12-04 09:28:31 -05:00
Andrew Gaul
5a995a9e14 Improve list bucket invalid and bad auth tests
Explicitly test invalid access keys and valid access keys but invalid
secret keys.  Also disable anonymous list bucket test for AWS.
radosgw uses this for connectivity testing but AWS does not allow it:

http://ceph.com/docs/master/radosgw/config/#verify-the-runtime
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html
2014-12-03 20:42:23 -08:00
Ray Lv
3e1e2ee438 s3tests: add conditional put test
Test for issue #8562

Signed-off-by: Ray Lv <raylv@yahoo-inc.com>
2014-11-25 14:51:38 +08:00
Josh Durgin
70db3015b9 Merge pull request #22 from ceph/wip-configurable-copy
test_s3: add is_slow_backend

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2014-10-20 13:45:39 -07:00
Yehuda Sadeh
f4de9f7b42 test_s3: fix test_list_multipart_upload()
Test was calling _multipart_upload() with extra useless param, this
broke when we added a new param to the function.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-10-14 14:16:30 -07:00
Luis Pabón
be982f624e Multipart test with 10k small objects.
Test detects that the server returns the correct error
code

Signed-off-by: Luis Pabón <lpabon@redhat.com>
2014-10-13 10:10:27 -04:00
Yehuda Sadeh
97beb9c816 test_s3: add is_slow_backend
for slow ec region copy

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-10-03 15:09:27 -07:00
Andrew Gaul
6aac86205a Test query string authorization expiration 2014-08-23 18:36:41 -07:00
Andrew Gaul
4adf87c7e3 Test that put object returns correct ETag 2014-08-22 11:13:57 -07:00
Andrew Gaul
870c19a44b Test delete object on non-existent bucket 2014-08-22 11:06:04 -07:00
Andrew Gaul
b81a718794 Test half-open range requests 2014-08-12 12:26:27 -07:00
Andrew Gaul
74a08169b1 Disable retries to test short writes
Previously test_object_create_bad_contentlength_mismatch_above failed
with:

Traceback (most recent call last):
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/gaul/work/s3-tests/s3tests/functional/test_headers.py", line 343, in test_object_create_bad_contentlength_mismatch_above
    e = assert_raises(boto.exception.S3ResponseError, key.set_contents_from_string, content)
  File "/home/gaul/work/s3-tests/s3tests/functional/utils.py", line 11, in assert_raises
    callableObj(*args, **kwargs)
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/s3/key.py", line 1379, in set_contents_from_string
    encrypt_key=encrypt_key)
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/s3/key.py", line 1246, in set_contents_from_file
    chunked_transfer=chunked_transfer, size=size)
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/s3/key.py", line 725, in send_file
    chunked_transfer=chunked_transfer, size=size)
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/s3/key.py", line 914, in _send_file_internal
    query_args=query_args
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/s3/connection.py", line 658, in make_request
    retry_handler=retry_handler
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/connection.py", line 1048, in make_request
    retry_handler=retry_handler)
  File "/home/gaul/work/s3-tests/virtualenv/local/lib/python2.7/site-packages/boto/connection.py", line 1004, in _mexe
    raise BotoServerError(response.status, response.reason, body)
BotoServerError: BotoServerError: 400 Bad Request
2014-08-01 21:47:13 -07:00
Andrew Gaul
3d3a4ce8fe Call get_new_bucket_name in long bucket name tests
Previously test_bucket_create_naming_good_long_251 and
test_bucket_list_long_name could fail with BucketAlreadyOwnedByYou.
2014-08-01 16:43:50 -07:00
Andrew Gaul
c82649b635 test_bucket_create_exists should fail on recreate
AWS S3 has two behaviors for recreating a bucket depending if you use
the us-standard or another region:

>>> bucket = conn.create_bucket('gaul-default', location=Location.DEFAULT)
>>> bucket = conn.create_bucket('gaul-default', location=Location.DEFAULT)
>>> bucket = conn.create_bucket('gaul-uswest', location=Location.USWest)
>>> bucket = conn.create_bucket('gaul-uswest', location=Location.USWest)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/boto/s3/connection.py", line 499, in create_bucket
    response.status, response.reason, body)
boto.exception.S3CreateError: S3CreateError: 409 Conflict
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>BucketAlreadyOwnedByYou</Code><Message>Your previous request to create the named bucket succeeded and you already own it.</Message><BucketName>gaul-uswest</BucketName><RequestId>24B6DC3170365CD7</RequestId><HostId>hUynMTyqc9WZFxAJ2RFK6P7BqmmeHHlMl9xL2NOy56xBUnOZCAlHqGvtMeGeAfVs</HostId></Error>

Additional discussion:

https://issues.apache.org/jira/browse/JCLOUDS-334
2014-07-31 01:35:21 -07:00
Yehuda Sadeh
a23c81187b test_s3: add bucket listing tests
Test prefix, delimiter, common prefixes, max_keys.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2014-07-22 16:59:58 -07:00
Yehuda Sadeh
b07fce46a0 rgw: add more multipart upload tests
Check for issue #8846.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-07-16 13:22:38 -07:00
Yehuda Sadeh
05f45c0fe9 s3tests: extende multipart upload test
Test for issue #8452

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2014-06-03 16:15:29 -07:00
Yehuda Sadeh
474bfd2077 test_s3: add some debug prints for multi region test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-04-01 12:24:53 -07:00
Yehuda Sadeh
f2902a042f test_s3: extend multipart test
Make test use a multipart upload with different part sizes, to exercise
code that triggered #7935.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-04-01 12:24:53 -07:00
Yehuda Sadeh
1b3d766621 test_s3: extend multi-delete test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2014-04-01 12:24:53 -07:00
Yehuda Sadeh
3fc4121f8b Merge branch 'next' 2013-09-06 21:54:46 -07:00
Yehuda Sadeh
b24fd7a099 rgw: extend cors tests
Checks all sort of issues related to #6078.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-09-04 16:45:00 -07:00
Joe Buck
ad9f3615e3 fix nuke_buckets for non-region tests
Signed-off-by: Joe Buck <jbbuck@gmail.com>
2013-08-30 23:47:54 -07:00
Joe Buck
2a216abcb4 Moving region_sync to utils
Since other classes need to do syncs,
let's move it to the utils file.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2013-08-30 22:13:42 -07:00
Joe Buck
15f7fcfc84 Rework nuke_buckets
Nuke all buckets on the master, sync, and then
nuke any remaining buckets on non-master regions.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2013-08-30 22:13:34 -07:00
Joe Buck
e54c700bbd Improve post-test cleanup
The multi-region tests were not being diligent
about cleaning up their buckets / keys
and making sure that those deletes were synced.
This was causing the nuke_prefixed_buckets()
method to run into errors.
This patch adds more cleanup code and
validation of that cleanup within
the pertinent tests.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
2013-08-28 22:48:48 -07:00
Joe Buck
703e66d547 Add support for default_region
Changes to actually use the
'default_region' setting in the
S3TEST_CONF file.
Previously, the first connection set
was assumed to be the default.
This means that the parse order
of the S3TEST_CONF file was dictating
how the tests behaved, resulting in
failures in some cases.

Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2013-08-28 08:56:26 -07:00
Yehuda Sadeh
56665e7da5 rgw: more extensive CORS testing
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-08-27 19:47:07 -07:00
Yehuda Sadeh
a06f5784df Merge branch 'next'
Conflicts:
	s3tests/functional/test_s3.py

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-08-16 10:55:54 -07:00
Yehuda Sadeh
f20c6e250e rename 'partial' metadata sync to 'incremental'
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-08-05 13:55:22 -07:00
Yehuda Sadeh
ef471ec2b9 s3tests: improve cors test to cover more functionality
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-08-01 13:24:28 -07:00
Yehuda Sadeh
7bdf4b897a test_s3: basic cors test
related to issue #5261

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-08-01 11:07:07 -07:00
Yehuda Sadeh
9954bc4470 s3tests: only tun multiregion tests if configured
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-29 13:17:46 -07:00
Yehuda Sadeh
3b733245c5 s3tests: modify cross region copy, sync triggering
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-26 22:19:36 -07:00
Yehuda Sadeh
b4441e3057 s3tests: improve cross region copy, sync meta
Can now configure sync agent rest address in order to force
a sync operation. Another option is to set a waiting time for
meta sync.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-26 20:33:48 -07:00
Yehuda Sadeh
04d46c59f0 s3tests: basic test to copy object between regions
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-26 18:07:52 -07:00
Yehuda Sadeh
5f4910fad5 s3tests: test_region_bucket_create_secondary_access_master
first multi-region test

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-26 11:16:36 -07:00
Yehuda Sadeh
0fb067de30 s3tests: some more multiregion changes
Now creating a connection per region for each user, can access
master and secondaries, and set a default region.
No longer using a specific region per user, as it doesn't
make sense.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-26 10:48:45 -07:00
Yehuda Sadeh
ca72b6cb7b s3_test: add test for listing objects with special prefix
Check for ceph issue #5362. Prefix starts with underscore.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-25 21:53:33 -07:00
Yehuda Sadeh
a62df16023 test_s3: basic cors test
related to issue #5261

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-25 21:53:33 -07:00
Yehuda Sadeh
99d3b4928d set the region is_master field
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-25 16:44:41 -07:00
Yehuda Sadeh
1c6b1ba1f6 rearrange regions info container
Now able to easily get the master and secondaries

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-25 16:43:19 -07:00
Yehuda Sadeh
232dd35817 add flexible multi-region configuration
can now create a region-specific configuration:

[region foo]
api_name = ...
host = ...
port = ...

and set that region to be used for specific connection:

[s3 main]
region = foo

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-25 14:13:34 -07:00
Yehuda Sadeh
c40b1cd348 support region configuration
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-07-24 13:23:24 -07:00
Wyllys Ingersoll
30ed65e6ba Fixed contentlength_negative tests to ignore the error_code 2013-06-03 15:07:21 -04:00
Sage Weil
0380eafac0 Merge remote-tracking branch 'gh/next' 2013-05-06 21:36:43 -07:00
Yehuda Sadeh
10a6caf4ee test_s3: reduce multipart tests sizes
Tests were dominating run time

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-02-20 13:55:35 -08:00
caleb miles
4095675827 test_s3: test multi-part uploads using boto provided functionality.
Tests the implementation of multi-part upload and verifies written
object.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
2013-02-20 13:51:14 -08:00
caleb miles
27581ccf6a test_s3: Add test of ACL grants through HTTP headers.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
2013-02-20 11:39:48 -08:00
Yehuda Sadeh
fd33286494 test_s3: fix test_list_multipart_upload
test wasn't really testing what it should have

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-02-19 18:00:15 -08:00
caleb miles
b39f25a02b test_s3: Add tests for additional canned acl support.
Corresponds to tracker issue 3667.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
2013-02-07 14:49:03 -08:00
Yehuda Sadeh
d4978eb4d1 test_s3: check stats correct after multipart upload
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-02-06 10:34:54 -08:00
Yehuda Sadeh
414a107b46 rgw: fix post tests to include tcp port
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-23 10:41:38 -08:00
Yehuda Sadeh
efa352711b rgw: remove more fails_on_dho tags
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-18 10:35:31 -08:00
Yehuda Sadeh
509715810d rgw: remove fails_on_dho tags
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-18 10:33:02 -08:00
Yehuda Sadeh
da7558e3ab test_s3: add test_object_copy_canned_acl
test copy object with canned acl modification

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-18 10:07:01 -08:00
Yehuda Sadeh
761d7f290f rgw: add missing fails_on_dho to post tests
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-18 09:57:01 -08:00
Yehuda Sadeh
83813602bc s3tests: fix post tests
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2013-01-18 09:37:21 -08:00
caleb miles
3b2c7b6b81 test_s3: Add tests of post object.
Tests the implementation of browser based uploads via a POST request.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
2013-01-18 09:37:12 -08:00
caleb miles
834800f341 test_s3: Add a test of multi-object delete.
Tests the implementation of the multi-object delete function call.

Signed-off-by: caleb miles <caleb.miles@inktank.com>
2012-08-28 13:42:08 -07:00
Yehuda Sadeh
09cdd45026 test_s3: add a test for response header modification
Testing response header fields modification by specified params.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-07-06 15:17:18 -07:00
Yehuda Sadeh
51450253a2 test_s3: remove extra code block
Code was duplicated by mistake. Removing it.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-07-06 14:45:15 -07:00
Kyle Bader
09681c62dc Add strict RFC2616 attributes to metadata tests
Some proxies/load balancers may sanitize input and may remove
headers that are not RFC 2616 complaint. This allows several
tests to be skipped if you are putting one of these products
in front of an S3 compatible API.
2012-07-03 16:28:59 -07:00
Yehuda Sadeh
3eaa877022 annotate tests with fails_on_dho
Should be reverted once fixes are pushed to the dho branch.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-06-14 18:58:17 -07:00
Yehuda Sadeh
304e3422e2 test two cases in copying object to itself
- should fail when not trying to change metadata
 - should succeed when changing metadata; also verify metadata

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-06-14 17:07:46 -07:00
Yehuda Sadeh
f1f86a0de0 test_s3: key.set_contents_from_file() rewind on dual write
This fixes a failure with boto 2.4.0.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-05-16 13:32:33 -07:00
Yehuda Sadeh
adabd0ba7d test_s3: fix FakeFile.seek(): handles whence param
beforehand we didn't accept the seek() whence param, which
failed with boto 2.4.0.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
2012-05-16 13:32:20 -07:00
Yehuda Sadeh
ebbafdb3e8 add functional tests for bucket HEAD
Signed-off-by: Yehuda Sadeh <yehuda.sadeh@dreamhost.com>
2012-04-19 13:33:08 -07:00
Yehuda Sadeh
1551c5b087 functional: test that bucket recreation doesn't override index
This resolves issue #1853.

Signed-off-by: Yehuda Sadeh <yehuda.sadeh@dreamhost.com>
2012-04-02 14:38:39 -07:00
Yehuda Sadeh
4633fe4c12 fix atomic_write test, don't resuse same key handle for read and write 2012-02-15 12:45:31 -08:00
Yehuda Sadeh
256577fc87 set fails_on_dho on test_bucket_create_special_key_names 2012-02-10 21:19:23 -08:00
Yehuda Sadeh
54d98ff1e3 test '%' as a valid char for object name 2012-02-10 16:53:06 -08:00
Yehuda Sadeh
d196c6829d add test_bucket_create_special_key_names 2012-02-06 17:04:24 -08:00
Yehuda Sadeh
c509158413 add test_object_copy_zero_size 2012-02-06 16:38:42 -08:00
Mark Kampe
a268bcfbef RGW test-case annotation for inventory.
Annotated S3 functional and error-detection test cases
with resource/method/operation/assertion properties to
enable automatic test case inventory generation.

Signed-off-by: Mark Kampe <mark.kampe@dreamhost.com>
2011-12-22 16:09:21 -08:00
Yehuda Sadeh
f7dde840a3 test_bucket_create_bad_contentlength_empty should use its own connection
since it can leave the connection in a wierd state
2011-11-22 14:46:53 -08:00
Yehuda Sadeh
a030d88e58 add bucket header tests 2011-11-22 13:25:42 -08:00
Matthew Wodrich
c749ff5043 Mark tests that fail with subdomain calling format
Add @attr('fails_with_subdomain') on all tests that should fail when
subdomain calling format is used, because they break DNS rules.
2011-11-04 16:29:54 -07:00
Matthew Wodrich
c4bded31c2 add calling_format switch in functional and common
Add calling_format switch with options ordinary, subdomain, and vhost to
s3tests/functional/__init__.py and /s3tests/common.py to allow the use
of OrdinaryCallingFormat, SubdomainCallingFormat, and VHostCallingFormat
in the config files for the nosetests and the tools using the common
parser.
2011-11-03 10:22:23 -07:00
Stephon Striplin
dec5360c92 add fails_on_dho on a failing test
It turns out that the e-mail comments were legitimate. The reason the
tests were passing was because the specific users now had e-mail
addresses, but this not the default case.
2011-10-28 12:47:25 -07:00
Tommi Virtanen
5b250e57e1 Let nose run s3tests in parallel.
This decreases the run time significantly.

Unfortunately, there seem to be cleanup-related bugs
in parallel runs for now. It's not safe to actually
run with --processes=N >1 yet, but at least the right
magic incantation is now recorded.
2011-10-13 13:35:56 -07:00
Tommi Virtanen
27d2e40b7d Move fuzzer under s3tests/fuzz.
This way, its unit tests are separate from s3tests/functional,
and s3tests/functional is the thing that actually talks to an
S3 implementation over the wire.

To actually run the fuzzer, use ./virtualenv/bin/s3tests-fuzz-headers
2011-10-13 13:34:23 -07:00
Tommi Virtanen
a18eee85fe Merge remote branch 'github/fuzz_headers' 2011-10-12 15:47:28 -07:00
Stephon Striplin
83755e2782 remove fails_on_{dho,rgw} on passing tests 2011-10-07 12:30:15 -07:00
Sage Weil
e486100a60 add s3tests.functional.test_s3.test_bucket_list_distinct 2011-10-05 16:04:20 -07:00
Sage Weil
211df8dc22 add fails_on_dho to test_object_create_bad_authorization_unreadable 2011-09-26 13:37:16 -07:00
Stephon Striplin
2fcdc79299 add fail_on_rgw on test_object_create_bad_authorization_unreadable 2011-09-23 15:14:26 -07:00
Stephon Striplin
377e968120 Rename object acl test 2011-09-22 13:07:02 -07:00
Stephon Striplin
dc732021d6 add no Content-Length PUT object acl test 2011-09-22 12:50:13 -07:00
Kyle Marsh
046b92b7eb S3 Fuzzer: httplib error handling
Sometimes httplib will through a BadStatusLine error that the fuzzer should
catch and register as a failure.
2011-09-12 13:05:29 -07:00
Kyle Marsh
18c3fe53c2 S3 Fuzzer: Output and garbage data tweaks.
- Output tweaks
- added support for printable_no_whitespace and binary_no_whitespace
2011-09-12 13:03:55 -07:00
Kyle Marsh
23fee1476a S3 Fuzzer: Start Fuzzing
- tweak yaml decision graph
- add test setup bucket creation, etc.
- add output with varying levels of verbosity
2011-09-12 13:01:07 -07:00
Kyle Marsh
e12f124686 S3 Fuzzer: Change how random data works
Remove SpecialVariables dict subclass in favor of RepeatExpandingFormatter
string.Formatter subclass.
2011-09-12 12:58:57 -07:00
Kyle Marsh
14288ad2f6 S3 Fuzzer: Incorporate Tv's suggestions
Tv looked over the fuzzer and had some idiomatic and design suggestions.

Adds several tests and reworks how expansion happens in addition to idiom
changes.
2011-09-12 12:57:43 -07:00
Kyle Marsh
bb7111a0d1 S3 Fuzzer: Write Decision Graph
Start writing the decision graph describing the fuzzer's attack surface in
earnest.
2011-09-12 12:55:32 -07:00
Kyle Marsh
62bd05a390 S3 Fuzzer: Handle null choices
Sometimes you might want to have your current node terminate the descent or
set something to the empty string.
2011-09-12 12:53:18 -07:00
Kyle Marsh
d7b49713f7 S3 Fuzzer: Implmented headers and made random safe
Random can sometimes include } or { which will confuse the string formatter.
Formatter escapes those values when they're doubled: }}, {{ but this
required some slight hacking to the expander.
2011-09-12 12:53:18 -07:00
Kyle Marsh
3f1314f7c8 S3 Fuzzer: set values can be weighted lists now 2011-09-12 12:53:18 -07:00
Kyle Marsh
4737652fc1 S3 Fuzzer: Added binary mode to random data generator 2011-09-12 12:53:18 -07:00
Kyle Marsh
195571b555 S3 Fuzzer: support weights for choices 2011-09-12 12:53:18 -07:00
Kyle Marsh
f5bb3f9c15 S3 Fuzzer: implemented decision expansion
Decision reached by descending the graph describing the attack surface can
be expanded to fill in all the placeholders
2011-09-12 12:53:17 -07:00
Kyle Marsh
7d9ec02686 S3 Fuzzer: Added SpecialVariables dict subclass
Helper class to catch sentinal keys and turn them into random values.  This
will be used to generate garbage data when expanding a decision.

Also add unit tests for expand_decision and assemble_decision
2011-09-12 12:52:37 -07:00
Kyle Marsh
a9a41a2891 S3 Fuzzer: began writing graph descent
still missing headers and choice weights
2011-09-12 12:52:37 -07:00
Kyle Marsh
fc93c02963 S3 Fuzzer: Change direction towards decision tree
Fuzzer now builds requests based on a DAG that describes the request space
and attack surface.
2011-09-12 12:51:01 -07:00
Stephon Striplin
2efa622751 Add atomic read tests 2011-08-29 13:14:18 -07:00
Stephon Striplin
f232f43d0b update attr decorators for dho
* passes test_object_raw_put_authenticated
* fails test_atomic_write_bucket_gone
2011-08-29 12:47:17 -07:00
Stephon Striplin
eeaeec573b don't delete key in atomic gone test
The key hasn't been written to the server so it doesn't need a delete
2011-08-29 12:36:00 -07:00
Stephon Striplin
3d775a02f4 add raw PUT tests 2011-08-26 13:45:37 -07:00
Stephon Striplin
76f78c0bb8 refactor raw GET tests
urllib2 is no longer necessary. We will use urlparse instead to get the
path and query components of the uri.
2011-08-26 13:42:31 -07:00
Stephon Striplin
e4d78eccbb add test for missing Content-Length header bucket creation 2011-08-25 17:46:25 -07:00
Stephon Striplin
aa700f1c8a add an atomic put test for removing bucket 2011-08-25 17:20:11 -07:00
Stephon Striplin
18d0b7d250 Add raw GET tests 2011-08-25 11:39:50 -07:00
Stephon Striplin
ea3f73ef90 add bucket list data vs object data comparison tests
* test_bucket_list_return_data
* test_bucket_list_object_time
2011-08-11 15:58:26 -07:00
Stephon Striplin
fd68aa2b5b remove superfluous code in test_bucket_list_maxkeys_zero 2011-08-11 15:52:16 -07:00
Stephon Striplin
16d84101e4 remove fails_on_dho on passing tests
* test_object_set_get_metadata_empty_to_unreadable_prefix
* test_object_set_get_metadata_empty_to_unreadable_suffix
* test_object_set_get_metadata_empty_to_unreadable_infix
* test_object_set_get_metadata_overwrite_to_unreadable_prefix
* test_object_set_get_metadata_overwrite_to_unreadable_suffix
* test_object_set_get_metadata_overwrite_to_unreadable_infix
2011-08-11 13:42:10 -07:00
Stephon Striplin
5e7792e0bf Switch test_bucket_list_maxkeys_unreadble to use '\n' instead of '\a'.
This avoids the SAX parser error. It also gave a different error code
from Amazon.
2011-08-11 11:23:43 -07:00
Stephon Striplin
80d332346f Switch tests using '\a' to '\n'
As noted in ce3d448d64, This will avoid
SAX parser errors.
2011-08-11 11:21:17 -07:00
Stephon Striplin
adcfe6f681 remove contentlength zero header test
This test effectively tells the server that this request will contain no
data and any data in the body should be interpreted to be part of the
next request. By luck, we close the tcp connection beforehand so we
don't see this additional data. However, the issues caused here would
not be at the rgw/dho level.
2011-08-11 11:01:56 -07:00
Tommi Virtanen
230ec11852 Flag test_object_create_bad_contenttype_unreadable as failing on both RGW and DHO. 2011-08-11 09:35:06 -07:00
Tommi Virtanen
76faa58bf7 DHO does not support bucket logging currently. 2011-08-11 09:31:20 -07:00
Tommi Virtanen
ce3d448d64 Switch test_object_create_unreadable to use '\n' instead of '\a'.
This avoids a SAX/boto interaction bug that is not of much interest,
yet still seems "evil" enough that it fulfills the original intent
of the test.

Add a link to the relevant bug report.
2011-08-11 09:30:26 -07:00
Tommi Virtanen
48e078a758 Flag test_bucket_list_maxkeys_unreadable as failing on dho & rgw. 2011-08-11 09:28:48 -07:00
Tommi Virtanen
6577c8266c Flag some fails_on_dho tests as fails_on_rgw too. 2011-08-11 08:47:25 -07:00
Tommi Virtanen
7da111aa7e Test that S3 object write replaces the metadata.
See http://tracker.newdream.net/issues/1352
2011-08-10 15:04:19 -07:00
Tommi Virtanen
199b8b46c5 Test S3 api for handling of Content-MD5 that does not match.
The existing test_object_create_bad_md5_invalid is not valid
base64, and hence triggers a different code path. This time,
submit valid base64, but have the result not match the expected
md5sum.
2011-08-10 14:55:34 -07:00
Stephon Striplin
0e9935a01e refactor/add additional prefix/delimiter bucket list tests 2011-08-10 12:05:28 -07:00
Stephon Striplin
f855beff73 add marker bucket list tests 2011-08-09 18:42:06 -07:00
Stephon Striplin
1f2810557f add maxkeys bucket list tests 2011-08-09 18:35:18 -07:00
Stephon Striplin
e7f66f178e add test for no bucket list delimiter 2011-08-09 15:02:54 -07:00
Stephon Striplin
881c09f626 add test for checking bucket list with no prefix 2011-08-08 17:39:02 -07:00
Stephon Striplin
0e698734b6 add non-existant prefix bucket list test 2011-08-08 17:24:40 -07:00
Stephon Striplin
c89404ba68 remove fails_on_dho/rgw on test_bucket_list_many 2011-08-08 16:40:14 -07:00
Stephon Striplin
854dcc5b10 create additional parameterized bucket list tests
* Test on prefix and delimiter, including slash and non-slash
  delimiters.
2011-08-08 15:16:15 -07:00
Stephon Striplin
a1102aaaad add Authorization header tests 2011-07-28 16:46:53 -07:00
Stephon Striplin
1dedf26b95 refactor header update logic 2011-07-28 11:34:52 -07:00
Tommi Virtanen
82a645c625 Demonstrate rgw bucket listing bug.
Discovered by stumbling on the "deleted_cnt" workaround
in s3tests.common.

TODO: Add tests for rest of the functionality in
http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTBucketGET.html
2011-07-28 11:00:47 -07:00
Stephon Striplin
832b297cec support multiple boto versions for header writing
Depending on the version of boto, different methods are necessary for
manipulating headers. We now support 2.0rc1 and 2.0 by sub-classing
boto.s3.connection.S3Connection and overloading
boto.connection.HTTPRequest.authorize, respectfully.
2011-07-27 20:04:33 -07:00
Kyle Marsh
68c8f4b87c s3-tests: Object download response code test
If a client specifies a range when requesting an object the server should
respond with 206 Partial Content when answering a request to get an object,
not 200 OK.  It should also respond with only those bytes requested.

This commit introduces a test, test_ranged_request_response_code, that
checks those criteria.
2011-07-27 15:01:13 -07:00