def rm_method(method): radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to rm args = vars(_parse_args(['up'])) expected = [] for i in xrange(3): remote_file = REMOTE_FILE + str(i) expected.append(remote_file) args.update({ "subject": TEST_FILE, "target": remote_file }) radu.upload(**args) while len(expected): remove_file = expected.pop() sys.stdout.truncate(0) getattr(radu, method)(subject=remove_file) radu.keys(subject=TEST_BUCKET) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] absent_key = os.path.basename(remove_file) assert_not_in(absent_key, keys, msg="Expecting absence of key mention '{0}'".format(absent_key)) for expected_key in expected: expected_key = os.path.basename(expected_key) assert_in(expected_key, keys, msg="Expecting output containing '{0}'".format(expected_key))
def key_slash_test(): radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to download args = vars(_parse_args(['up'])) expected = [] keys_added = 3 # some to find for i in xrange(keys_added): remote_file = os.path.join(TEST_BUCKET, "find", os.path.basename(TEST_FILE)) + str(i) expected.append(remote_file) args.update({"subject": TEST_FILE, "target": remote_file}) radu.upload(**args) # some to miss for i in xrange(keys_added): remote_file = os.path.join(TEST_BUCKET, "miss", os.path.basename(TEST_FILE)) + str(i) args.update({"subject": TEST_FILE, "target": remote_file}) radu.upload(**args) sys.stdout.truncate(0) # bucket/find/ (trailing slash) radu.keys(subject=os.path.join(TEST_BUCKET, 'find', '')) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] for expected_key in expected: expected_key = os.path.join('find', os.path.basename(expected_key)) msg = "Expecting output containing '{0}'".format(expected_key) assert_in(expected_key, keys, msg=msg) assert_equal(keys_added, len(keys), "Expected to have %d keys, got %d" % (keys_added, len(keys)))
def copy_method(method): handler = TestHandler(Matcher()) logger = logging.getLogger() logger.addHandler(handler) radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to download args = vars(_parse_args(['up'])) args.update({ "subject": TEST_FILE, "target": REMOTE_FILE }) radu.upload(**args) sys.stdout.truncate(0) # 'threads' needed args = vars(_parse_args(['-y', method])) target_file = REMOTE_FILE + '-copy' args.update({ "subject": REMOTE_FILE, "target": target_file }) radu.streaming_copy(**args) msgs = [ "Finished uploading", "tests.s3.amazonaws.com/data.txt", "Download URL", "Key data matches!" ] for msg in msgs: fmt = "Expecting log message containing '{0}'" assert_true(handler.matches(message=msg), msg=fmt.format(msg)) radu.keys(subject=TEST_BUCKET) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] expected = [REMOTE_FILE, target_file] fmt = "Expecting output containing '{0}'" for expected_key in expected: expected_key = os.path.basename(expected_key) assert_in(expected_key, keys, msg=fmt.format(expected_key))
def key_test(): radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to download args = vars(_parse_args(['up'])) expected = [] for i in xrange(3): remote_file = REMOTE_FILE + str(i) expected.append(remote_file) args.update({"subject": TEST_FILE, "target": remote_file}) radu.upload(**args) sys.stdout.truncate(0) radu.keys(subject=TEST_BUCKET) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] for expected_key in expected: expected_key = os.path.basename(expected_key) msg = "Expecting output containing '{0}'".format(expected_key) assert_in(expected_key, keys, msg=msg)
def key_test(): radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to download args = vars(_parse_args(['up'])) expected = [] for i in xrange(3): remote_file = REMOTE_FILE + str(i) expected.append(remote_file) args.update({ "subject": TEST_FILE, "target": remote_file }) radu.upload(**args) sys.stdout.truncate(0) radu.keys(subject=TEST_BUCKET) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] for expected_key in expected: expected_key = os.path.basename(expected_key) assert_in(expected_key, keys, msg="Expecting output containing '{0}'".format(expected_key))
def copy_method(method): handler = TestHandler(Matcher()) logger = logging.getLogger() logger.addHandler(handler) radu = RadulaProxy(connection=boto.connect_s3()) radu.make_bucket(subject=TEST_BUCKET) # give something to download args = vars(_parse_args(['up'])) args.update({"subject": TEST_FILE, "target": REMOTE_FILE}) radu.upload(**args) sys.stdout.truncate(0) # 'threads' needed args = vars(_parse_args(['-y', method])) target_file = REMOTE_FILE + '-copy' args.update({"subject": REMOTE_FILE, "target": target_file}) radu.streaming_copy(**args) msgs = [ "Finished uploading", "tests.s3.amazonaws.com/data.txt", "Download URL", "Checksum Verified!" ] for msg in msgs: fmt = "Expecting log message containing '{0}'" assert_true(handler.matches(message=msg), msg=fmt.format(msg)) radu.keys(subject=TEST_BUCKET) keys = [k.strip() for k in sys.stdout.getvalue().strip().split("\n")] expected = [REMOTE_FILE, target_file] fmt = "Expecting output containing '{0}'" for expected_key in expected: expected_key = os.path.basename(expected_key) assert_in(expected_key, keys, msg=fmt.format(expected_key))