private void GenerateDirNodeWithMetadata(
            DirNode parent,
            int dirLevel)
        {
            FileNode fileNode = new FileNode(DMLibTestBase.FileName + "_0");

            parent.AddFileNode(fileNode);

            fileNode = new FileNode(DMLibTestBase.FileName + "_1");
            parent.AddFileNode(fileNode);

            if (dirLevel <= 0)
            {
                return;
            }

            --dirLevel;
            DirNode dirNode = new DirNode(DMLibTestBase.DirName + "_0");

            dirNode.Metadata = new Dictionary <string, string>();
            dirNode.Metadata.Add("Name0", "Value0");
            dirNode.Metadata.Add("Name1", "Value1");
            this.GenerateDirNodeWithMetadata(dirNode, dirLevel);
            parent.AddDirNode(dirNode);

            dirNode          = new DirNode(DMLibTestBase.DirName + "_1");
            dirNode.Metadata = new Dictionary <string, string>();
            dirNode.Metadata.Add("Name0", "Value0");
            dirNode.Metadata.Add("Name1", "Value1");
            this.GenerateDirNodeWithMetadata(dirNode, dirLevel);
            parent.AddDirNode(dirNode);
        }
Ejemplo n.º 2
0
        private void GenerateDirNodeWithPermissions(
            DirNode parent,
            int dirLevel,
            string permissions)
        {
            FileNode fileNode = new FileNode(DMLibTestBase.FileName + "_0");

            fileNode.SizeInByte   = 1024;
            fileNode.PortableSDDL = permissions;
            parent.AddFileNode(fileNode);

            fileNode              = new FileNode(DMLibTestBase.FileName + "_1");
            fileNode.SizeInByte   = 1024;
            fileNode.PortableSDDL = permissions;
            parent.AddFileNode(fileNode);

            if (dirLevel <= 0)
            {
                return;
            }

            --dirLevel;
            DirNode dirNode = new DirNode(DMLibTestBase.DirName + "_0");

            dirNode.PortableSDDL = permissions;
            this.GenerateDirNodeWithPermissions(dirNode, dirLevel, permissions);
            parent.AddDirNode(dirNode);

            dirNode = new DirNode(DMLibTestBase.DirName + "_1");
            dirNode.PortableSDDL = permissions;
            this.GenerateDirNodeWithPermissions(dirNode, dirLevel, permissions);
            parent.AddDirNode(dirNode);
        }
        private void GenerateDirNodeWithAttributes(
            DirNode parent,
            int dirLevel,
            CloudFileNtfsAttributes smbAttributes)
        {
            FileNode fileNode = new FileNode(DMLibTestBase.FileName + "_0");

            fileNode.SizeInByte    = 1024;
            fileNode.SMBAttributes = smbAttributes;
            parent.AddFileNode(fileNode);

            fileNode               = new FileNode(DMLibTestBase.FileName + "_1");
            fileNode.SizeInByte    = 1024;
            fileNode.SMBAttributes = smbAttributes;
            parent.AddFileNode(fileNode);

            if (dirLevel <= 0)
            {
                return;
            }

            --dirLevel;
            DirNode dirNode = new DirNode(DMLibTestBase.DirName + "_0");

            this.GenerateDirNodeWithAttributes(dirNode, dirLevel, smbAttributes);
            if (smbAttributes == CloudFileNtfsAttributes.Normal)
            {
                dirNode.SMBAttributes = CloudFileNtfsAttributes.Directory;
            }
            else
            {
                dirNode.SMBAttributes = CloudFileNtfsAttributes.Directory | smbAttributes;
            }
            parent.AddDirNode(dirNode);

            dirNode = new DirNode(DMLibTestBase.DirName + "_1");
            this.GenerateDirNodeWithAttributes(dirNode, dirLevel, smbAttributes);
            if (smbAttributes == CloudFileNtfsAttributes.Normal)
            {
                dirNode.SMBAttributes = CloudFileNtfsAttributes.Directory;
            }
            else
            {
                dirNode.SMBAttributes = CloudFileNtfsAttributes.Directory | smbAttributes;
            }
            parent.AddDirNode(dirNode);
        }
Ejemplo n.º 4
0
        private void TestDelimiter(char delimiter)
        {
            Test.Info("Test delimiter: {0}", delimiter);
            DMLibDataInfo sourceDataInfo = new DMLibDataInfo(string.Empty);
            string        fileName       = DMLibTestBase.FolderName + delimiter + DMLibTestBase.FolderName + delimiter + DMLibTestBase.FileName;

            DMLibDataHelper.AddOneFile(sourceDataInfo.RootNode, fileName, 1);

            TransferContext context = new DirectoryTransferContext();

            context.FileFailed += (sender, e) =>
            {
                Test.Info(e.Exception.StackTrace);
            };

            TestExecutionOptions <DMLibDataInfo> options = new TestExecutionOptions <DMLibDataInfo>()
            {
                IsDirectoryTransfer  = true,
                TransferItemModifier = (node, item) =>
                {
                    dynamic dirOptions = DefaultTransferDirectoryOptions;
                    dirOptions.Recursive = true;
                    dirOptions.Delimiter = delimiter;
                    item.Options         = dirOptions;
                    item.TransferContext = context;
                }
            };

            TestResult <DMLibDataInfo> result = this.ExecuteTestCase(sourceDataInfo, options);

            DMLibDataInfo expectedDataInfo = new DMLibDataInfo(string.Empty);
            DirNode       dirNode1         = new DirNode(FolderName);
            DirNode       dirNode2         = new DirNode(FolderName);
            FileNode      fileNode         = sourceDataInfo.RootNode.GetFileNode(fileName).Clone(DMLibTestBase.FileName);

            dirNode2.AddFileNode(fileNode);
            dirNode1.AddDirNode(dirNode2);
            expectedDataInfo.RootNode.AddDirNode(dirNode1);

            VerificationHelper.VerifySingleTransferStatus(result, 1, 0, 0, null);
            VerificationHelper.VerifyTransferSucceed(result, expectedDataInfo);
        }
        private static void PrepareSourceData()
        {
            DMLibDataInfo sourceFileTree = new DMLibDataInfo(string.Empty);
            DirNode dirNode1 = new DirNode("folder1");
            DirNode subDir1 = new DirNode("subfolder1");
            subDir1.AddDirNode(new DirNode("subfolder3"));
            subDir1.AddFileNode(GenerateFileNode("testfile2"));
            subDir1.AddFileNode(GenerateFileNode("4testfile"));
            dirNode1.AddDirNode(subDir1);

            DirNode subDir2 = new DirNode("subfolder2");
            DirNode subDir4 = new DirNode("subfolder4");
            subDir4.AddFileNode(GenerateFileNode("test5"));
            subDir2.AddDirNode(subDir4);

            subDir2.AddFileNode(GenerateFileNode("TESTFILE345"));
            subDir2.AddFileNode(GenerateFileNode("testYfile"));
            subDir2.AddFileNode(GenerateFileNode("f_arbitrary.exe"));
            subDir2.AddFileNode(GenerateFileNode("测试x文件"));
            dirNode1.AddDirNode(subDir2);

            dirNode1.AddFileNode(GenerateFileNode("testfile1"));
            dirNode1.AddFileNode(GenerateFileNode("TestFile2"));
            dirNode1.AddFileNode(GenerateFileNode("测试文件2"));
            sourceFileTree.RootNode.AddDirNode(dirNode1);

            DirNode dirNode2 = new DirNode("folder2");
            dirNode2.AddFileNode(GenerateFileNode("folder_file"));
            dirNode2.AddDirNode(new DirNode("testfile1"));
            dirNode2.AddFileNode(GenerateFileNode("测试文件三"));
            dirNode2.AddFileNode(GenerateFileNode("测试四文件"));
            sourceFileTree.RootNode.AddDirNode(dirNode2);

            DirNode dirNode3 = new DirNode("folder3");
            sourceFileTree.RootNode.AddDirNode(dirNode3);

            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("testfile"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("testfile1"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("testfile2"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("testXfile"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("testXXfile"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("测试文件"));
            sourceFileTree.RootNode.AddFileNode(GenerateFileNode("..a123"));

            DMLibDataInfo blobSourceFileTree = sourceFileTree.Clone();
            blobSourceFileTree.RootNode.AddFileNode(GenerateFileNode("TeSTfIle"));

            Test.Info("Start to generate test data, will take a while...");
            foreach (DMLibDataType dataType in sourceDataTypes)
            {
                if (IsCloudBlob(dataType))
                {
                    PrepareSourceData(dataType, blobSourceFileTree.Clone());
                }
                else
                {
                    PrepareSourceData(dataType, sourceFileTree.Clone());
                }
            }
            Test.Info("Done");
        }
        public static void AddTree(DirNode dirNode, string dirPrefix, string filePrefix, int width, int depth, int fileSizeInKB, FileAttributes? fa = null, DateTime? lmt = null)
        {
            for (int i = 0; i < width; ++i)
            {
                string fileName = i == 0 ? filePrefix : filePrefix + "_" + i;
                FileNode fileNode = new FileNode(fileName)
                {
                    SizeInByte = 1024L * fileSizeInKB,
                    FileAttr = fa,
                    LastModifiedTime = lmt,
                };

                dirNode.AddFileNode(fileNode);
            }

            if (depth > 0)
            {
                for (int i = 0; i < width; ++i)
                {
                    string dirName = i == 0 ? dirPrefix : dirPrefix + "_" + i;
                    DirNode subDirNode = dirNode.GetDirNode(dirName);
                    if (subDirNode == null)
                    {
                        subDirNode = new DirNode(dirName);
                        dirNode.AddDirNode(subDirNode);
                    }

                    DMLibDataHelper.AddTree(subDirNode, dirPrefix, filePrefix, width, depth - 1, fileSizeInKB, fa, lmt: lmt);
                }
            }
        }