static void RunExternalSorting(SorterOptions options, IProgress <string> progress) { var ram = BytesStringParser.ParseBytesString(options.AvailableRam); var readBufferSize = BytesStringParser.ParseBytesString(options.ReadBufferSize); var writeBufferSize = BytesStringParser.ParseBytesString(options.WriteBufferSize); if (readBufferSize > int.MaxValue) { throw new ArgumentOutOfRangeException($"Read buffer size cannot be greater then {int.MaxValue} bytes."); } if (writeBufferSize > int.MaxValue) { throw new ArgumentOutOfRangeException($"Write buffer size cannot be greater then {int.MaxValue} bytes."); } var stopwatch = Stopwatch.StartNew(); progress.Report($"Starting external sorting at {DateTime.Now}..."); string temporaryFolder = ""; if (string.IsNullOrWhiteSpace(options.TemporaryFolder)) { temporaryFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); } else { temporaryFolder = Path.Combine(options.TemporaryFolder, Guid.NewGuid().ToString()); } Directory.CreateDirectory(temporaryFolder); ExternalSorter.Sort(options.InputFile, options.OutputFile, temporaryFolder, ram, (int)readBufferSize, (int)writeBufferSize, progress); if (options.CleanTemporaryFolder) { Directory.Delete(temporaryFolder, true); } stopwatch.Stop(); progress.Report($"External sorting completed at {DateTime.Now}. Elapsed time: {stopwatch.Elapsed}"); }
public void InvalidBytesValues(string inputValue) { Assert.Throws <ArgumentException>(() => BytesStringParser.ParseBytesString(inputValue)); }
public void ValidBytesValues(string inputValue, long extpectedBytes) { var actual = BytesStringParser.ParseBytesString(inputValue); Assert.AreEqual(extpectedBytes, actual); }