public override object GetTransferObject(string rootPath, FileNode fileNode, StorageCredentials credentials = null) { if (credentials != null) { throw new NotSupportedException("Credentials is not supported in LocalDataAdaptor."); } string filePath = Path.Combine(this.BasePath, rootPath, fileNode.GetLocalRelativePath()); if (this.useStream) { if (SourceOrDest.Source == this.SourceOrDest) { return(new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)); } else { return(new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)); } } else { return(filePath); } }
public static void WaitUntilFileCreated(FileNode fileNode, DataAdaptor <DMLibDataInfo> dataAdaptor, DMLibDataType dataType, int timeoutInSec = 300) { Func <bool> checkFileCreated = null; if (dataType == DMLibDataType.Local) { string filePath = dataAdaptor.GetAddress() + fileNode.GetLocalRelativePath(); checkFileCreated = () => { return(File.Exists(filePath)); }; } else if (dataType == DMLibDataType.PageBlob || dataType == DMLibDataType.AppendBlob) { CloudBlobDataAdaptor blobAdaptor = dataAdaptor as CloudBlobDataAdaptor; checkFileCreated = () => { CloudBlob cloudBlob = blobAdaptor.GetCloudBlobReference(fileNode); return(cloudBlob.Exists(options: HelperConst.DefaultBlobOptions)); }; } else if (dataType == DMLibDataType.BlockBlob) { CloudBlobDataAdaptor blobAdaptor = dataAdaptor as CloudBlobDataAdaptor; checkFileCreated = () => { CloudBlockBlob blockBlob = blobAdaptor.GetCloudBlobReference(fileNode) as CloudBlockBlob; try { return(blockBlob.DownloadBlockList(BlockListingFilter.All, options: HelperConst.DefaultBlobOptions).Any()); } catch (StorageException) { return(false); } }; } else if (dataType == DMLibDataType.CloudFile) { CloudFileDataAdaptor fileAdaptor = dataAdaptor as CloudFileDataAdaptor; checkFileCreated = () => { CloudFile cloudFile = fileAdaptor.GetCloudFileReference(fileNode); return(cloudFile.Exists(options: HelperConst.DefaultFileOptions)); }; } else { Test.Error("Unexpected data type: {0}", DMLibTestContext.SourceType); } MultiDirectionTestHelper.WaitUntil(checkFileCreated, timeoutInSec); }
public override object GetTransferObject(FileNode fileNode) { string filePath = Path.Combine(this.BasePath, fileNode.GetLocalRelativePath()); if (this.useStream) { if (SourceOrDest.Source == this.SourceOrDest) { return(new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)); } else { return(new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)); } } else { return(filePath); } }