@@ -87,7 +87,8 @@ protected internal override BlockBlobClient GetSourceBlob(BlobContainerClient co
8787
8888 private async Task PopulateVirtualDirectoryContainer (
8989 BlobContainerClient containerClient ,
90- long objectLength )
90+ long objectLength ,
91+ string prefix = default )
9192 {
9293 byte [ ] data = GetRandomBuffer ( objectLength ) ;
9394 Metadata folderMetadata = new Dictionary < string , string > ( )
@@ -110,16 +111,18 @@ private async Task PopulateVirtualDirectoryContainer(
110111 ] ;
111112 foreach ( string file in files )
112113 {
114+ string fileName = prefix != default ? $ "{ prefix } /{ file } " : file ;
113115 using MemoryStream stream = new ( data ) ;
114- BlobClient blobClient = containerClient . GetBlobClient ( file ) ;
116+ BlobClient blobClient = containerClient . GetBlobClient ( fileName ) ;
115117 await blobClient . UploadAsync ( stream ) ;
116118 }
117119
118120 // List of empty directories to be created
119121 string [ ] emptyDirs = [ "emptyDir" , "recursiveDir/emptySubDir" ] ;
120122 foreach ( string dir in emptyDirs )
121123 {
122- BlobClient blobClient = containerClient . GetBlobClient ( dir ) ;
124+ string dirName = prefix != default ? $ "{ prefix } /{ dir } " : dir ;
125+ BlobClient blobClient = containerClient . GetBlobClient ( dirName ) ;
123126 await blobClient . UploadAsync ( Stream . Null , new BlobUploadOptions ( )
124127 {
125128 Metadata = folderMetadata
@@ -128,7 +131,9 @@ private async Task PopulateVirtualDirectoryContainer(
128131 }
129132
130133 [ RecordedTest ]
131- public async Task DirectoryCopyWithVirtualDirectories ( [ Values ( true , false ) ] bool hns )
134+ public async Task DirectoryCopyWithVirtualDirectories (
135+ [ Values ( true , false ) ] bool hns ,
136+ [ Values ( true , false ) ] bool usePrefix )
132137 {
133138 BlobServiceClient serviceClient = SourceClientBuilder . GetServiceClientFromOauthConfig (
134139 hns ? Tenants . TestConfigHierarchicalNamespace : Tenants . TestConfigDefault ,
@@ -137,7 +142,9 @@ public async Task DirectoryCopyWithVirtualDirectories([Values(true, false)] bool
137142 await using DisposingBlobContainer sourceContainer = await SourceClientBuilder . GetTestContainerAsync ( serviceClient ) ;
138143 await using DisposingBlobContainer destinationContainer = await DestinationClientBuilder . GetTestContainerAsync ( serviceClient ) ;
139144
140- await PopulateVirtualDirectoryContainer ( sourceContainer . Container , 1024 ) ;
145+ string sourcePrefix = usePrefix ? "source" : default ;
146+ string destinationPrefix = usePrefix ? "destination" : default ;
147+ await PopulateVirtualDirectoryContainer ( sourceContainer . Container , 1024 , prefix : sourcePrefix ) ;
141148
142149 TransferManager transferManager = new ( ) ;
143150 BlobsStorageResourceProvider blobProvider = new ( TestEnvironment . Credential ) ;
@@ -146,8 +153,8 @@ public async Task DirectoryCopyWithVirtualDirectories([Values(true, false)] bool
146153 TestEventsRaised testEventsRaised = new ( transferOptions ) ;
147154
148155 TransferOperation transfer = await transferManager . StartTransferAsync (
149- GetSourceStorageResourceContainer ( sourceContainer . Container , default ) ,
150- GetSourceStorageResourceContainer ( destinationContainer . Container , default ) ,
156+ GetSourceStorageResourceContainer ( sourceContainer . Container , sourcePrefix ) ,
157+ GetSourceStorageResourceContainer ( destinationContainer . Container , destinationPrefix ) ,
151158 transferOptions ) ;
152159
153160 CancellationTokenSource tokenSource = new ( TimeSpan . FromSeconds ( 30 ) ) ;
@@ -158,8 +165,8 @@ await TestTransferWithTimeout.WaitForCompletionAsync(
158165
159166 testEventsRaised . AssertUnexpectedFailureCheck ( ) ;
160167 await VerifyResultsAsync (
161- sourceContainer . Container , string . Empty ,
162- destinationContainer . Container , string . Empty ) ;
168+ sourceContainer . Container , sourcePrefix ,
169+ destinationContainer . Container , destinationPrefix ) ;
163170 }
164171 }
165172}
0 commit comments