| Index: py/utils/gs_utils_manualtest.py
|
| diff --git a/py/utils/gs_utils_manualtest.py b/py/utils/gs_utils_manualtest.py
|
| index b4f70a6cc3b5b7f85f00680882ec461ba0c27d88..37621d1e70cdcf6e27fa456c3bd00bb4b80dc2af 100755
|
| --- a/py/utils/gs_utils_manualtest.py
|
| +++ b/py/utils/gs_utils_manualtest.py
|
| @@ -45,7 +45,7 @@ def _test_public_read():
|
| gs.list_bucket_contents(bucket=TEST_BUCKET, subdir=None)
|
|
|
|
|
| -def _test_upload_if():
|
| +def _test_upload_if_one_file():
|
| """Test upload_if param within upload_file()."""
|
| gs = _get_authenticated_gs_handle()
|
| filename = 'filename'
|
| @@ -113,6 +113,86 @@ def _test_upload_if():
|
| # Clean up the local dir.
|
| shutil.rmtree(local_dir)
|
|
|
| +
|
| +def _test_upload_if_multiple_files():
|
| + """Test upload_if param within upload_dir_contents()."""
|
| + gs = _get_authenticated_gs_handle()
|
| + subdir = 'subdir'
|
| + filenames = ['file1', 'file2']
|
| + local_dir = tempfile.mkdtemp()
|
| + remote_dir = _get_unique_posix_dir()
|
| + sample_file_local_path = os.path.join(local_dir, subdir, filenames[0])
|
| + sample_file_remote_path = posixpath.join(remote_dir, subdir, filenames[0])
|
| + try:
|
| + # Create files on local disk, and upload them for the first time.
|
| + os.mkdir(os.path.join(local_dir, subdir))
|
| + for filename in filenames:
|
| + with open(os.path.join(local_dir, subdir, filename), 'w') as f:
|
| + f.write('original contents of %s' % filename)
|
| + gs.upload_dir_contents(
|
| + source_dir=local_dir, dest_bucket=TEST_BUCKET,
|
| + dest_dir=remote_dir, upload_if=gs.UploadIf.IF_NEW)
|
| + try:
|
| + # Re-upload the same files, with upload_if=gs.UploadIf.ALWAYS;
|
| + # the timestamps should change.
|
| + old_timestamp = gs.get_last_modified_time(
|
| + bucket=TEST_BUCKET, path=sample_file_remote_path)
|
| + time.sleep(2)
|
| + gs.upload_dir_contents(
|
| + source_dir=local_dir, dest_bucket=TEST_BUCKET,
|
| + dest_dir=remote_dir, upload_if=gs.UploadIf.ALWAYS)
|
| + new_timestamp = gs.get_last_modified_time(
|
| + bucket=TEST_BUCKET, path=sample_file_remote_path)
|
| + assert old_timestamp != new_timestamp, '%s != %s' % (
|
| + old_timestamp, new_timestamp)
|
| +
|
| + # Re-upload the same files, with upload_if=gs.UploadIf.IF_MODIFIED;
|
| + # the timestamps should NOT change.
|
| + old_timestamp = new_timestamp
|
| + time.sleep(2)
|
| + gs.upload_dir_contents(
|
| + source_dir=local_dir, dest_bucket=TEST_BUCKET,
|
| + dest_dir=remote_dir, upload_if=gs.UploadIf.IF_MODIFIED)
|
| + new_timestamp = gs.get_last_modified_time(
|
| + bucket=TEST_BUCKET, path=sample_file_remote_path)
|
| + assert old_timestamp == new_timestamp, '%s == %s' % (
|
| + old_timestamp, new_timestamp)
|
| +
|
| + # Modify and re-upload the files, with upload_if=gs.UploadIf.IF_NEW;
|
| + # the timestamps should still not change.
|
| + old_timestamp = new_timestamp
|
| + with open(sample_file_local_path, 'w') as f:
|
| + f.write('modified contents of sample file')
|
| + time.sleep(2)
|
| + gs.upload_dir_contents(
|
| + source_dir=local_dir, dest_bucket=TEST_BUCKET,
|
| + dest_dir=remote_dir, upload_if=gs.UploadIf.IF_NEW)
|
| + new_timestamp = gs.get_last_modified_time(
|
| + bucket=TEST_BUCKET, path=sample_file_remote_path)
|
| + assert old_timestamp == new_timestamp, '%s == %s' % (
|
| + old_timestamp, new_timestamp)
|
| +
|
| + # Re-upload the modified file, with upload_if=gs.UploadIf.IF_MODIFIED;
|
| + # now the timestamp SHOULD change.
|
| + old_timestamp = new_timestamp
|
| + time.sleep(2)
|
| + gs.upload_dir_contents(
|
| + source_dir=local_dir, dest_bucket=TEST_BUCKET,
|
| + dest_dir=remote_dir, upload_if=gs.UploadIf.IF_MODIFIED)
|
| + new_timestamp = gs.get_last_modified_time(
|
| + bucket=TEST_BUCKET, path=sample_file_remote_path)
|
| + assert old_timestamp != new_timestamp, '%s != %s' % (
|
| + old_timestamp, new_timestamp)
|
| + finally:
|
| + # Delete all the files we uploaded to Google Storage.
|
| + for filename in filenames:
|
| + gs.delete_file(bucket=TEST_BUCKET,
|
| + path=posixpath.join(remote_dir, subdir, filename))
|
| + finally:
|
| + # Clean up the local dir.
|
| + shutil.rmtree(local_dir)
|
| +
|
| +
|
| def _test_authenticated_round_trip():
|
| gs = _get_authenticated_gs_handle()
|
| remote_dir = _get_unique_posix_dir()
|
| @@ -275,7 +355,8 @@ def _test_dir_upload_and_download():
|
|
|
|
|
| if __name__ == '__main__':
|
| - _test_upload_if()
|
| + _test_upload_if_multiple_files()
|
| + _test_upload_if_one_file()
|
| _test_public_read()
|
| _test_authenticated_round_trip()
|
| _test_dir_upload_and_download()
|
|
|