private async Task AddFileToDfs(long byteSize) { var fakeNode = Substitute.For <IRpcClient>(); var sender = PeerIdHelper.GetPeerId("sender"); var recipient = PeerIdHelper.GetPeerId("recipient"); var senderPeerId = sender; var peerSettings = senderPeerId.ToSubstitutedPeerSettings(); var recipientPeerId = recipient; var fileToTransfer = FileHelper.CreateRandomTempFile(byteSize); var addFileToDfsRequestHandler = new AddFileToDfsRequestObserver(_dfs, peerSettings, _nodeFileTransferFactory, _logger); var transferBytesRequestHandler = new TransferFileBytesRequestObserver(_nodeFileTransferFactory, peerSettings, _logger); var uniqueFileKey = CorrelationId.GenerateCorrelationId(); var crcValue = FileHelper.GetCrcValue(fileToTransfer); //Create a response object and set its return value var request = new AddFileToDfsRequest { Node = "node1", FileName = fileToTransfer, FileSize = (ulong)byteSize }.ToProtocolMessage(sender, uniqueFileKey); request.SendToHandler(_fakeContext, addFileToDfsRequestHandler); Assert.Single(_nodeFileTransferFactory.Keys); var fileTransferInformation = _nodeFileTransferFactory.GetFileTransferInformation(uniqueFileKey); Assert.True(fileTransferInformation.Initialised, "File transfer not initialised"); using (var fs = File.Open(fileToTransfer, FileMode.Open)) { var fileUploadInformation = new UploadFileTransferInformation(fs, senderPeerId, recipientPeerId, fakeNode.Channel, uniqueFileKey); for (uint i = 0; i < fileTransferInformation.MaxChunk; i++) { fileUploadInformation.GetUploadMessageDto(i).Content .SendToHandler(_fakeContext, transferBytesRequestHandler); } } Assert.True(fileTransferInformation.ChunkIndicatorsTrue()); await TaskHelper.WaitForAsync(() => fileTransferInformation.DfsHash != null, TimeSpan.FromSeconds(15)); Assert.NotNull(fileTransferInformation.DfsHash); long ipfsCrcValue; using (var ipfsStream = await _dfs.ReadAsync(fileTransferInformation.DfsHash)) { ipfsCrcValue = FileHelper.GetCrcValue(ipfsStream); } Assert.Equal(crcValue, ipfsCrcValue); }
public AddFileToDfsRequestObserverTests() { _hashProvider = new HashProvider(HashingAlgorithm.GetAlgorithmMetadata("blake2b-256")); _manualResetEvent = new ManualResetEvent(false); _senderIdentifier = PeerIdHelper.GetPeerId("sender"); var peerSettings = _senderIdentifier.ToSubstitutedPeerSettings(); _fakeDfs = Substitute.For <IDfs>(); var logger = Substitute.For <ILogger>(); _fakeContext = Substitute.For <IChannelHandlerContext>(); _nodeFileTransferFactory = Substitute.For <IDownloadFileTransferFactory>(); _addFileToDfsRequestObserver = new AddFileToDfsRequestObserver(_fakeDfs, peerSettings, _nodeFileTransferFactory, logger); }