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);
            }
        }
Beispiel #2
0
        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);
            }
        }