def test_execute_fails_for_inter_cloud_copy(self): source_resource = test_resources.from_url_string('s3://b/o1.txt') destination_resource = test_resources.from_url_string('gs://b/o2.txt') with self.assertRaises(ValueError): intra_cloud_copy_task.IntraCloudCopyTask(source_resource, destination_resource)
def SetUp(self): self.messages = apis.GetMessagesModule('storage', 'v1') # Test resources tree structure: # bucket1: # dir1 # b/c/d.txt # b.txt # dir2/ # b/c/d.txt # b/e.txt # dirobj.txt # foo/ # b/c/d.txt # b/e.txt self.dir1 = test_resources.from_url_string('gs://bucket/dir1/') self.dir2 = test_resources.from_url_string('gs://bucket/dir2/') self.foo_dir = test_resources.from_url_string('gs://bucket/foo/') self.dirobj = test_resources.from_url_string('gs://bucket/dirobj.txt') self.objects_with_dir_prefix = [self.dir1, self.dir2, self.dirobj] self.dir1_objects = [ test_resources.from_url_string('gs://bucket/dir1/b/c/d.txt'), test_resources.from_url_string('gs://bucket/dir1/b.txt') ] self.dir2_objects = [ test_resources.from_url_string('gs://bucket/dir2/b/c/d.txt'), test_resources.from_url_string('gs://bucket/dir2/b/e.txt'), ] self.foo_dir_objects = [ test_resources.from_url_string('gs://bucket/foo/b/c/d.txt'), test_resources.from_url_string('gs://bucket/foo/b/e.txt'), ]
def test_equality(self): object1 = name_expansion.NameExpansionResult( test_resources.from_url_string('gs://bucket/dir1/obj1.txt'), storage_url.storage_url_from_string('gs://bucket/dir1/')) object2 = name_expansion.NameExpansionResult( test_resources.from_url_string('gs://bucket/dir1/obj1.txt'), storage_url.storage_url_from_string('gs://bucket/dir1/')) self.assertEqual(object1, object2)
def test_non_equality_with_different_expanded_urls(self): """Test with same resources but different expanded URLs.""" object1 = name_expansion.NameExpansionResult( test_resources.from_url_string('gs://bucket/dir1/obj1.txt'), storage_url.storage_url_from_string('gs://bucket/dir1/')) object2 = name_expansion.NameExpansionResult( test_resources.from_url_string('gs://bucket/dir1/obj1.txt'), storage_url.storage_url_from_string('gs://bucket/dir2/')) self.assertNotEqual(object1, object2)
def test_execute_copies_file(self, mock_client): source_resource = test_resources.from_url_string('gs://b/o1.txt') destination_resource = test_resources.from_url_string('gs://b/o2.txt') task = intra_cloud_copy_task.IntraCloudCopyTask( source_resource, destination_resource) task.execute() mock_client.copy_object.assert_called_once_with( source_resource, destination_resource)
def test_gets_unknown_resource(self): # Create URL test_resources.from_url_string will categorize as unknown. url_string = 'gs://' parsed_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.UnknownResource(parsed_url) self.assertEqual(test_resources.from_url_string(url_string), resource)
def test_creates_missing_bucket_metadata(self): expected_metadata = self.messages.Bucket(name='b') self.apitools_client.buckets.Insert.Expect( self.messages.StorageBucketsInsertRequest( bucket=expected_metadata, project=TEST_PROJECT, projection=self.default_projection), response=expected_metadata) expected_resource = gcs_api._bucket_resource_from_metadata( expected_metadata) observed_resource = self.gcs_client.create_bucket( test_resources.from_url_string('gs://b')) self.assertEqual(observed_resource, expected_resource)
def test_patch_object_metadata_populates_missing_metadata(self): return_metadata = self.messages.Object(name='o', bucket='b') request = self.messages.StorageObjectsPatchRequest( bucket=TEST_BUCKET, object=TEST_OBJECT, objectResource=return_metadata, projection=self.default_projection) self.apitools_client.objects.Patch.Expect(request, response=return_metadata) expected_resource = gcs_api._object_resource_from_metadata( return_metadata) patch_resource = test_resources.from_url_string('gs://b/o') observed_resource = self.gcs_client.patch_object_metadata( TEST_BUCKET, TEST_OBJECT, patch_resource) self.assertEqual(observed_resource, expected_resource)
def test_str_method(self): expanded_result = name_expansion.NameExpansionResult( test_resources.from_url_string('gs://bucket/dir1/obj1.txt'), storage_url.storage_url_from_string('gs://bucket/dir1/')) self.assertEqual(str(expanded_result), 'gs://bucket/dir1/obj1.txt')
def SetUp(self): properties.VALUES.core.project.Set(TEST_PROJECT) self.stdout_seek_position = 0 self.messages = core_apis.GetMessagesModule('storage', 'v1') # bucket1: # object1 # dir1/object2 # dir1/subdir1/object3 # dir1/subdir2/object4 # dir2/subdir3/object5 # bucket2: # dir_object # dir_object/object6 self.bucket1 = test_resources.from_url_string('gs://bucket1') self.bucket2 = test_resources.from_url_string('gs://bucket2') self.object1 = resource_reference.ObjectResource( storage_url.storage_url_from_string('gs://bucket1/object1#1'), creation_time=DATETIME, size=0) self.object2 = test_resources.from_url_string( 'gs://bucket1/dir1/object2') self.object3 = test_resources.from_url_string( 'gs://bucket1/dir1/subdir1/object3') self.object4 = test_resources.from_url_string( 'gs://bucket1/dir1/subdir2/object4') self.object5 = test_resources.from_url_string( 'gs://bucket1/dir2/subdir3/object5') self.object6 = test_resources.from_url_string( 'gs://bucket2/dir_object/object6') self.object_duplicate_of_dir = test_resources.from_url_string( 'gs://bucket2/dir_object') self.dir1 = test_resources.from_url_string('gs://bucket1/dir1/') self.dir2 = test_resources.from_url_string('gs://bucket1/dir2/') self.subdir1 = test_resources.from_url_string('gs://bucket1/dir1/subdir1/') self.subdir2 = test_resources.from_url_string('gs://bucket1/dir1/subdir2/') self.subdir3 = test_resources.from_url_string('gs://bucket1/dir2/subdir3/') self.dir_duplicate_of_object = test_resources.from_url_string( 'gs://bucket2/dir_object/') self.bucket_resources = [self.bucket1, self.bucket2] self.bucket1_top_level_resources = [self.object1, self.dir1, self.dir2] self.bucket1_dir1_resources = [self.object2, self.subdir1, self.subdir2] self.bucket1_dir1_subdir1_resources = [self.object3] self.bucket1_dir1_subdir2_resources = [self.object4] self.bucket1_dir2_resources = [self.subdir3] self.bucket1_dir2_subdir3_resources = [self.object5] self.bucket1_all_objects = [self.object1, self.object2, self.object3, self.object4, self.object5] self.bucket2_top_level_resources = [self.object_duplicate_of_dir, self.dir_duplicate_of_object] self.bucket2_dir_object_resources = [self.object6]
def test_gets_prefix_resource(self): url_string = 'gs://bucket/prefix/' parsed_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.PrefixResource(parsed_url, 'prefix/') self.assertEqual(test_resources.from_url_string(url_string), resource)
def test_gets_object_resource(self): url_string = 'gs://bucket/object#1' parsed_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.ObjectResource(parsed_url) self.assertEqual(test_resources.from_url_string(url_string), resource)
def test_gets_bucket_resource(self): url_string = 'gs://bucket' cloud_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.BucketResource(cloud_url) self.assertEqual(test_resources.from_url_string(url_string), resource)
def test_gets_file_object_resource(self): url_string = 'hi.txt' parsed_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.FileObjectResource(parsed_url) self.assertEqual(test_resources.from_url_string(url_string), resource)
def test_gets_file_directory_resource(self): url_string = 'hi' + os.path.sep parsed_url = storage_url.storage_url_from_string(url_string) resource = resource_reference.FileDirectoryResource(parsed_url) self.assertEqual(test_resources.from_url_string(url_string), resource)