private void Compress(ICompressStrategy strategy, IFileNameProvider sourceFileNameProvider, IFileNameProvider targetFileNameProvider) { _wasException = null; var sourceFileName = sourceFileNameProvider.GetFileName(); if (!File.Exists(sourceFileName)) { throw new FileNotFoundException($"Не найден файл {sourceFileName}"); } // создание очередей var loggerForQueue = new LoggerDummy(); var queueForRead = new PartQueue("ForRead", loggerForQueue); _queues.Add(queueForRead); var queueForCompress = new PartQueue("ForCompress", loggerForQueue); _queues.Add(queueForCompress); var queueForWrite = new IndexedParts("ForWrite", loggerForQueue); _queues.Add(queueForWrite); _stopEvent = new ManualResetEventSlim(false); // создание обработчиков очередей var writer = new Writer(_logger, _systemInfoProvider, ApplExceptionHandler, targetFileNameProvider, _stopEvent, queueForWrite, queueForRead); _queueHandlers.Add(writer); var archiversRuner = new CompressRuner(_logger, _systemInfoProvider, ApplExceptionHandler, queueForCompress, queueForWrite); _queueHandlers.Add(archiversRuner); var partReader = new FilePartReader(_logger, strategy); var reader = new Reader(_logger, _systemInfoProvider, ApplExceptionHandler, sourceFileNameProvider, partReader, queueForRead, queueForCompress); _queueHandlers.Add(reader); // вывод отладочной информации var sourceFileInfo = new FileInfo(sourceFileName); _logger.Add($"Размер файла {sourceFileInfo.Length} byte"); AddSystemInfo(); var maxActivePartCount = strategy.MaxActivePartCount; _logger.Add($"Максимальное кол-во одновременно обрабатываемых частей {maxActivePartCount} шт."); _logger.Add($"Размер одной части {strategy.PartSize} byte"); _logger.Add("Работа начата..."); _stopWatch.Reset(); _stopWatch.Start(); for (var i = 0; i < maxActivePartCount; i++) { var part = new FilePart($"FilePart{i + 1}"); queueForRead.Add(part); } StopEventWait(); }
private void Decompress(IDecompressStrategy strategy, IFileNameProvider sourceFileNameProvider, IFileNameProvider targetFileNameProvider) { // нужно читать из файла части заархивированные // они начинаются с 10 байт (31,139,8,0,0,0,0,0,4,0) // эти части по отдельности отдавать на декомпрессию _wasException = null; var sourceFileName = sourceFileNameProvider.GetFileName(); if (!File.Exists(sourceFileName)) { throw new FileNotFoundException($"Не найден файл {sourceFileName}"); } // создание очередей var loggerForQueue = new LoggerDummy(); var queueForRead = new PartQueue("ForRead", loggerForQueue); _queues.Add(queueForRead); var queueForDecompress = new PartQueue("ForDecompress", loggerForQueue); _queues.Add(queueForDecompress); var queueForWrite = new IndexedParts("ForWrite", loggerForQueue); _queues.Add(queueForWrite); _stopEvent = new ManualResetEventSlim(false); // создание обработчиков очередей var writer = new Writer(_logger, _systemInfoProvider, ApplExceptionHandler, targetFileNameProvider, _stopEvent, queueForWrite, queueForRead); _queueHandlers.Add(writer); var decompressRuner = new DecompressRuner(_logger, _systemInfoProvider, ApplExceptionHandler, queueForDecompress, queueForWrite); _queueHandlers.Add(decompressRuner); var partReader = new ArсhivePartReader(_logger); var reader = new Reader(_logger, _systemInfoProvider, ApplExceptionHandler, sourceFileNameProvider, partReader, queueForRead, queueForDecompress); _queueHandlers.Add(reader); var sourceFileInfo = new FileInfo(sourceFileName); _logger.Add($"Размер файла {sourceFileInfo.Length} byte"); AddSystemInfo(); _logger.Add("Работа начата..."); _stopWatch.Reset(); _stopWatch.Start(); for (var i = 0; i < strategy.MaxActivePartCount; i++) { var part = new FilePart($"FilePart{i + 1}"); queueForRead.Add(part); } StopEventWait(); }
private void TestCompressDecompressCheck(string sourceFileName, string compressedFileName, string decompressedNewFileName) { // prepare if (File.Exists(compressedFileName)) { File.Delete(compressedFileName); } Assert.IsFalse(File.Exists(compressedFileName), "Не удалось удалить архив перед началом теста"); if (File.Exists(decompressedNewFileName)) { File.Delete(decompressedNewFileName); } Assert.IsFalse(File.Exists(decompressedNewFileName), "Не удалось удалить разархивированный файл перед началом теста"); // init var logger = new LoggerDummy(); var appl = new Appl(logger, new SystemInfoProvider()); var source = new FileNameProviderStub(sourceFileName); var archive = new FileNameProviderStub(compressedFileName); var systemInfoProvider = new SystemInfoProvider(); var strategy = new SmartCompressStrategy(systemInfoProvider); appl.ExecuteCompress(strategy, source, archive); Assert.IsTrue(File.Exists(compressedFileName), "Файл архива не обнаружен после архивации"); var decompress = new FileNameProviderStub(decompressedNewFileName); var decompressStrategy = new DecompressStrategyStub(1); appl.ExecuteDecompress(decompressStrategy, archive, decompress); Assert.IsTrue(File.Exists(compressedFileName), "Файл разархивированный не обнаружен после разархивации"); IsFilesEquals(sourceFileName, decompressedNewFileName); }
public void TestInitialize() { var logger = new LoggerDummy(); _parser = new ArgsParser(logger); }