Пример #1
0
 public void ReaderIsNotActiveIfNoChunks()
 {
     using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object,
                                                         _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object))
     {
         Assert.IsFalse(chunksReader.IsActive());
     }
 }
Пример #2
0
        public void EmptyStreamProducesNoChunks()
        {
            var inputStream = new MemoryStream();
            var pipe        = new PipeMock();

            var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock());

            reader.ReadFromStream(inputStream, new CancellationToken());

            Assert.Empty(pipe.Chunks);
        }
Пример #3
0
        public void SmallFileFitsInOneChunk()
        {
            var bytes       = new byte[] { 0x11, 0x22, 0x33, 0x42 };
            var inputStream = new MemoryStream(bytes);
            var pipe        = new PipeMock();

            var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock());

            reader.ReadFromStream(inputStream, new CancellationToken());

            Assert.Single(pipe.Chunks);
            Assert.Equal(bytes, pipe.Chunks[0].Bytes);
        }
Пример #4
0
        public void BigFileFitsInSeveralChunks()
        {
            var bytes       = new byte[] { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB };
            var inputStream = new MemoryStream(bytes);
            var pipe        = new PipeMock();

            var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock());

            reader.ReadFromStream(inputStream, new CancellationToken());

            Assert.Equal(2, pipe.Chunks.Count);
            Assert.Equal(8, pipe.Chunks[0].Bytes.Length);
            Assert.Equal(3, pipe.Chunks[1].Bytes.Length);
            Assert.Equal(1, pipe.Chunks[1].Index);
            Assert.True(pipe.WasClosed);
        }
Пример #5
0
        public void WriterTaskExecutesWhenAddingChunkToQueue()
        {
            _fileReaderMock.Setup(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>())).Returns(It.IsAny <byte[]>());
            _gzipCompressMock.Setup(x => x.Execute(It.IsAny <byte[]>())).Returns(It.IsAny <byte[]>());
            _fileWriterTaskMock.Setup(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>()));

            using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object,
                                                                _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object))
            {
                chunksReader.EnqueueChunk(new ChunkReadInfo(It.IsAny <int>(), It.IsAny <long>(), It.IsAny <int>()));

                Thread.Sleep(100);

                _fileWriterTaskMock.Verify(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>()), Times.Once);
            }
        }
Пример #6
0
        public void ReaderReturnsErrorIfReaderFails()
        {
            _fileReaderMock.Setup(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>())).Throws(new ReaderException("An unexpected error occurred"));
            _gzipCompressMock.Setup(x => x.Execute(It.IsAny <byte[]>())).Returns(It.IsAny <byte[]>());
            _fileWriterTaskMock.Setup(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>()));

            using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object,
                                                                _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object))
            {
                chunksReader.EnqueueChunk(new ChunkReadInfo(It.IsAny <int>(), It.IsAny <long>(), It.IsAny <int>()));

                Thread.Sleep(100);

                _fileReaderMock.Verify(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>()), Times.Once);
                _gzipCompressMock.Verify(x => x.Execute(It.IsAny <byte[]>()), Times.Never);
            }
        }