コード例 #1
0
        public void Dfs_Failure_Can_Respond_With_Failed_Code()
        {
            _nodeFileTransferFactory.RegisterTransfer(Arg.Any <IDownloadFileInformation>())
            .Returns(FileTransferResponseCodeTypes.Successful);

            _fakeDfsService.UnixFsApi.AddAsync(Arg.Any <Stream>(), Arg.Any <string>()).Throws(new Exception());

            var protocolMessage = GenerateProtocolMessage();

            AddFileToDfsResponse addFileToDfsResponse = null;

            async void UseArgument(IDownloadFileInformation information)
            {
                information.RecipientChannel = Substitute.For <IChannel>();
                information.UpdateChunkIndicator(0, true);
                information.Dispose();
                await information.RecipientChannel.WriteAndFlushAsync(Arg.Do <MessageDto>(x =>
                {
                    addFileToDfsResponse = x.Content.FromProtocolMessage <AddFileToDfsResponse>();
                    _manualResetEvent.Set();
                }));
            }

            _nodeFileTransferFactory.RegisterTransfer(Arg.Do <IDownloadFileInformation>(UseArgument));

            protocolMessage.SendToHandler(_fakeContext, _addFileToDfsRequestObserver);
            _manualResetEvent.WaitOne();

            addFileToDfsResponse.ResponseCode[0].Should().Be((byte)FileTransferResponseCodeTypes.Failed.Id);
        }
コード例 #2
0
        public void Successful_Add_File_Can_Respond_With_Finished_Code()
        {
            _nodeFileTransferFactory.RegisterTransfer(Arg.Any <IDownloadFileInformation>())
            .Returns(FileTransferResponseCodeTypes.Successful);

            var expectedCid = _hashProvider.ComputeUtf8MultiHash("expectedHash").ToCid();
            var fakeBlock   = Substitute.For <IFileSystemNode>();

            fakeBlock.Id.Returns(expectedCid);
            _fakeDfsService.UnixFsApi.AddAsync(Arg.Any <Stream>(), Arg.Any <string>(), Arg.Any <AddFileOptions>()).Returns(fakeBlock);

            var protocolMessage = GenerateProtocolMessage();

            AddFileToDfsResponse addFileToDfsResponse = null;

            async void UseArgument(IDownloadFileInformation information)
            {
                information.RecipientChannel = Substitute.For <IChannel>();
                information.UpdateChunkIndicator(0, true);
                information.Dispose();
                await information.RecipientChannel.WriteAndFlushAsync(Arg.Do <MessageDto>(x =>
                {
                    addFileToDfsResponse = x.Content.FromProtocolMessage <AddFileToDfsResponse>();
                    _manualResetEvent.Set();
                }));
            }

            _nodeFileTransferFactory.RegisterTransfer(Arg.Do <IDownloadFileInformation>(UseArgument));

            protocolMessage.SendToHandler(_fakeContext, _addFileToDfsRequestObserver);
            _manualResetEvent.WaitOne();

            addFileToDfsResponse.ResponseCode[0].Should().Be((byte)FileTransferResponseCodeTypes.Finished.Id);
            addFileToDfsResponse.DfsHash.Should().Be(expectedCid);
        }
        public void AddFileToDfsResponse_No_Response_Codes()
        {
            //Arrange
            var addFileToDfsResponse = new AddFileToDfsResponse();
            var commandContext       = TestCommandHelpers.GenerateCliResponseCommandContext(_testScheduler);
            var addFileToDfsCommand  = new AddFileCommand(null, commandContext, _logger);

            //Act
            TestCommandHelpers.GenerateResponse(commandContext, addFileToDfsResponse);

            _testScheduler.Start();

            //Assert
            commandContext.UserOutput.Received(1).WriteLine(AddFileCommand.ErrorNoResponseCodes);
        }
        public void HandlerRemovesFileTransferOnError()
        {
            var channelHandlerContext = Substitute.For <IChannelHandlerContext>();
            var senderPeerIdentifier  = PeerIdHelper.GetPeerId();
            var correlationId         = CorrelationId.GenerateCorrelationId();

            var addFileResponse = new AddFileToDfsResponse
            {
                DfsHash      = "Test",
                ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Error)
            };

            var addFileToDfsResponseObserver = new AddFileToDfsResponseObserver(
                Substitute.For <ILogger>(),
                _uploadFileTransferFactory
                );

            addFileToDfsResponseObserver.HandleResponseObserver(addFileResponse, channelHandlerContext,
                                                                senderPeerIdentifier, correlationId);
            _uploadFileTransferFactory.Received(1).Remove(Arg.Any <IUploadFileInformation>(), true);
        }
        public void AddFileToDfsResponse_Finished_Can_Get_Output()
        {
            //Arrange
            var addFileToDfsResponse = new AddFileToDfsResponse
            {
                ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Finished.Id)
            };

            var commandContext      = TestCommandHelpers.GenerateCliResponseCommandContext(_testScheduler);
            var addFileToDfsCommand = new AddFileCommand(null, commandContext, _logger);

            //Act
            TestCommandHelpers.GenerateResponse(commandContext, addFileToDfsResponse);

            _testScheduler.Start();

            //Assert
            commandContext.UserOutput.Received(1).WriteLine("File transfer completed, Response: " +
                                                            FileTransferResponseCodeTypes.Finished.Name +
                                                            " Dfs Hash: " + addFileToDfsResponse.DfsHash);
        }
        public void InitializesFileTransferOnSuccessResponse()
        {
            var channelHandlerContext = Substitute.For <IChannelHandlerContext>();
            var senderPeerId          = PeerIdHelper.GetPeerId();
            var correlationId         = CorrelationId.GenerateCorrelationId();

            var addFileResponse = new AddFileToDfsResponse
            {
                DfsHash      = "Test",
                ResponseCode = ByteString.CopyFrom((byte)FileTransferResponseCodeTypes.Successful)
            };

            var addFileToDfsResponseObserver = new AddFileToDfsResponseObserver(
                Substitute.For <ILogger>(),
                _uploadFileTransferFactory
                );

            addFileToDfsResponseObserver.HandleResponseObserver(addFileResponse, channelHandlerContext,
                                                                senderPeerId, correlationId);
            _uploadFileTransferFactory.Received(1)
            .FileTransferAsync(Arg.Any <ICorrelationId>(), Arg.Any <CancellationToken>());
        }