private void SpecificProviderIsCalled(
            Mock <IGZipStreamProvider> gZipStreamProvider,
            Mock <IDeflateStreamProvider> deflateStreamProvider,
            string compressionMethod)
        {
            var compressionDeterminer = new Mock <ICompressionTypeDeterminer>();
            var logWriter             = new Mock <ILogWriter>();

            compressionDeterminer.Setup(
                a => a.IsCompressedWithEncodingType(
                    It.IsAny <HttpRequest>(),
                    It.Is <string>(a => a.Equals(compressionMethod))))
            .Returns(true);

            var decompressorProvider = new DecompressorProvider(
                compressionDeterminer.Object,
                gZipStreamProvider.Object,
                deflateStreamProvider.Object,
                logWriter.Object
                );

            var request = new HttpRequestMockObjectsProvider().HttpRequest;
            var headers = new Mock <IHeaderDictionary> ();


            headers.Setup(a => a[It.Is <string> (a => a.Equals(CompressionTypeDeterminer.ContentEncodingHeader, StringComparison.InvariantCultureIgnoreCase))])
            .Returns(CompressionTypeDeterminer.ContentEncodingGzip);

            request.Setup(a => a.Headers)
            .Returns(headers.Object);

            decompressorProvider.GetDecompressor(request.Object);
        }
        public void UnknownCompressionMethodThrowsException()
        {
            var compressionDeterminer = new Mock <ICompressionTypeDeterminer>();
            var gZipStreamProvider    = new Mock <IGZipStreamProvider>();
            var deflateStreamProvider = new Mock <IDeflateStreamProvider>();
            var logWriter             = new Mock <ILogWriter>();

            compressionDeterminer.Setup(
                a => a.IsCompressedWithEncodingType(
                    It.IsAny <HttpRequest>(),
                    It.Is <string>(a => a.Equals("blah"))))
            .Returns(true);

            var decompressorProvider = new DecompressorProvider(
                compressionDeterminer.Object,
                gZipStreamProvider.Object,
                deflateStreamProvider.Object,
                logWriter.Object
                );

            var request = new HttpRequestMockObjectsProvider().HttpRequest;
            var headers = new Mock <IHeaderDictionary> ();


            headers.Setup(a => a[It.Is <string> (a => a.Equals(CompressionTypeDeterminer.ContentEncodingHeader, StringComparison.InvariantCultureIgnoreCase))])
            .Returns(CompressionTypeDeterminer.ContentEncodingGzip);

            request.Setup(a => a.Headers)
            .Returns(headers.Object);

            Assert.Throws <Exception>(() => decompressorProvider.GetDecompressor(request.Object));
        }
Ejemplo n.º 3
0
        static int Main(string[] args)
        {
            if (args.Length != 3 || false)
            {
                "Please specify all input arguments.".PrintOnConsole();
                return(1);
            }
            // args = new[] { "compress", "G:\\Win10.vhd", "G:\\ArchivedVHD.arh" };
            // args = new[] { "decompress", "G:\\ArchivedVHD.arh", "K:\\DecompressedVHD.vhd" };


            // args = new[] { "compress", "G:\\Input.txt", "G:\\InputArc.txt" };
            //args = new[] { "decompress", "G:\\InputArc.txt", "G:\\DecompressedInput.txt" };
            switch (args[0])
            {
            case "compress":
            {
                var fileToArchive = args[1];
                var archiveName   = args[2];

                var fileReader   = new FileReader(fileToArchive);
                var inpuQueues   = QueueProvider.GetQueues(Configuration.CountOfCompressors, Configuration.QueueBufferLength);
                var reader       = FileReaderProvider.StartReader(fileReader, inpuQueues, Configuration.BlockSize);
                var outputQueues = QueueProvider.GetQueues(Configuration.CountOfCompressors, Configuration.QueueBufferLength);

                var compressors = Enumerable.Zip(inpuQueues, outputQueues, (a, b) => (inQueue: a, outQueue: b))
                                  .Select(i => CompressorProvider.StartCompressor(i.inQueue, i.outQueue, CompressionLevel.Optimal))
                                  .ToArray();

                var fileWriter = new ArchiveFileWriter(new FileWriter(archiveName));
                var writer     = FileWriterProvider.StartWriting(fileWriter, outputQueues);

                var monitor = MonitorProvider.StartMonitor(inpuQueues, outputQueues);

                writer.Join();

                break;
            }

            case "decompress":
            {
                var archiveName    = args[1];
                var outputFileName = args[2];

                var inpuCompressedQueues     = QueueProvider.GetQueues(Configuration.CountOfDecompressors, Configuration.QueueBufferLength);
                var archiveReader            = FileReaderProvider.StartReader(new ArchiveFileReader(new FileReader(archiveName)), inpuCompressedQueues, Configuration.BlockSize + 100);
                var outputDecompressedQueues = QueueProvider.GetQueues(Configuration.CountOfDecompressors, Configuration.QueueBufferLength);

                var decompressors = Enumerable.Zip(inpuCompressedQueues, outputDecompressedQueues, (a, b) => (inQueue: a, outQueue: b))
                                    .Select(i => DecompressorProvider.StartDecompressor(i.inQueue, i.outQueue, Configuration.BlockSize))
                                    .ToArray();

                var decompressedWriter = FileWriterProvider.StartWriting(new FileWriter(outputFileName), outputDecompressedQueues);

                var monitor = MonitorProvider.StartMonitor(inpuCompressedQueues, outputDecompressedQueues);

                decompressedWriter.Join();
                break;
            }

            default:
                break;
            }

            return(0);
        }