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); }
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(' ', ',')); }
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(' ', ',')); }