Пример #1
0
        public static void TransferTestFiles(string local, string remote, int fileNum,
                                             Dictionary <int, double> fileNumTime, Dictionary <int, double> fileNumTimeSD, ICLIOperation operation)
        {
            List <long> fileTimeList = new List <long>();
            Stopwatch   sw           = new Stopwatch();

            for (int j = 0; j < Constants.Iterations; j++)
            {
                operation.BeforeBatch(local, remote);

                sw.Reset(); sw.Start();

                Test.Assert(operation.GoBatch(local: local, remote: remote), operation.Name + " should succeed");

                sw.Stop();
                fileTimeList.Add(sw.ElapsedMilliseconds);
                Test.Info("file number : {0} round : {1} time(ms) : {2}", fileNum, j + 1, sw.ElapsedMilliseconds);

                var error = string.Empty;
                Test.Assert(operation.ValidateBatch(local, remote, fileNum, out error), error);
            }

            double average   = fileTimeList.Average();
            var    deviation = fileTimeList.Select(num => Math.Pow(num - average, 2));
            double sd        = Math.Sqrt(deviation.Average());

            fileNumTime.Add(fileNum, average);
            fileNumTimeSD.Add(fileNum, sd);

            Test.Info("file number : {0} average time : {1}", fileNum, average);
            Test.Info("file number : {0} standard dev : {1}", fileNum, sd);
        }
Пример #2
0
        public void Run(ICLIOperation operation, ICLIOperation reverseOperation = null)
        {
            Dictionary <int, double> fileNumTime   = new Dictionary <int, double>();
            Dictionary <int, double> fileNumTimeSD = new Dictionary <int, double>();
            string local = ".";

            int fileNum = 2;

            while (fileNum <= 128) //change to a smaller number(2048-->128) as we upload/download blobs in sequence now
            {
                var folderName    = FolderName + "-" + fileNum;
                var containerName = DownloadContainerPrefix + "-" + folderName;
                var localFolder   = local + "\\" + folderName;

                if (operation.IsUploadTest)
                {
                    FileUtil.PrepareData(folderName, fileNum, FILE_SIZE_MB * 1024);
                    containerName = UploadContainerPrefix + "-" + folderName;
                }
                else if (this.GenerateDataBeforeDownload && reverseOperation != null)
                {
                    FileUtil.PrepareData(folderName, fileNum, FILE_SIZE_MB * 1024);
                    reverseOperation.BeforeBatch(remote: containerName, local: localFolder);
                    reverseOperation.GoBatch(remote: containerName, local: localFolder);
                }

                TransferTestFiles(
                    remote: containerName,
                    local: localFolder,
                    fileNum: fileNum,
                    fileNumTime: fileNumTime,
                    fileNumTimeSD: fileNumTimeSD,
                    operation: operation);
                fileNum *= 4;
            }

            //print the results
            string sizes = string.Empty;
            string times = string.Empty;
            string sds   = string.Empty;

            foreach (KeyValuePair <int, double> d in fileNumTime)
            {
                sizes += d.Key + " ";
                times += d.Value + " ";
            }
            foreach (KeyValuePair <int, double> d in fileNumTimeSD)
            {
                sds += d.Value + " ";
            }

            Test.Info("[file_number] {0}", sizes);
            Test.Info("[file_times] {0}", times);
            Test.Info("[file_timeSDs] {0}", sds);

            Helper.writePerfLog(TestContext.FullyQualifiedTestClassName + "." + TestContext.TestName);
            Helper.writePerfLog(sizes.Replace(' ', ','));
            Helper.writePerfLog(times.Replace(' ', ','));
            Helper.writePerfLog(sds.Replace(' ', ','));
        }
Пример #3
0
        public void Run(ICLIOperation operation, ICLIOperation reverseOperation = null)
        {
            var fileNumTime   = new Dictionary <int, double>();
            var fileNumTimeSD = new Dictionary <int, double>();

            var fileNum = MAX_FILE_NUM; // 4096;

            while (fileNum > 0)
            {
                var folder        = FolderName + "-" + fileNum;
                var size          = MAX_SIZE_MB * 1024 / fileNum;
                var containerName = DownloadContainerPrefix + "-" + folder;
                var localFolder   = ".\\" + folder;

                if (operation.IsUploadTest)
                {
                    FileUtil.PrepareData(folder, fileNum, size);
                    containerName = UploadContainerPrefix + "-" + folder;
                }
                else if (this.GenerateDataBeforeDownload && reverseOperation != null)
                {
                    FileUtil.PrepareData(folder, fileNum, size);
                    reverseOperation.BeforeBatch(remote: containerName, local: localFolder);
                    reverseOperation.GoBatch(remote: containerName, local: localFolder);
                }

                TransferTestFiles(
                    remote: containerName,
                    local: localFolder,
                    fileNum: fileNum,
                    fileNumTime: fileNumTime,
                    fileNumTimeSD: fileNumTimeSD,
                    operation: operation);

                fileNum /= 4;
            }

            //print the results
            string sizes = string.Empty;
            string times = string.Empty;
            string sds   = string.Empty;

            foreach (KeyValuePair <int, double> d in fileNumTime)
            {
                sizes += d.Key + " ";
                times += d.Value + " ";
            }
            foreach (KeyValuePair <int, double> d in fileNumTimeSD)
            {
                sds += d.Value + " ";
            }

            Test.Info("[file_number] {0}", sizes);
            Test.Info("[file_times] {0}", times);
            Test.Info("[file_timeSDs] {0}", sds);

            Helper.writePerfLog(TestContext.FullyQualifiedTestClassName + "." + TestContext.TestName);
            Helper.writePerfLog(sizes.Replace(' ', ','));
            Helper.writePerfLog(times.Replace(' ', ','));
            Helper.writePerfLog(sds.Replace(' ', ','));
        }