private BlockDto MapBlockToDto(BlockWithTransactions b) { return(new BlockDto { BlockHeight = (long)b.Number.Value, BlockHash = b.BlockHash, TimeStamp = b.Timestamp.ToString(), TransactionCount = b.TransactionCount() }); }
public void BlockWithTransactions_TransactionCount_Returns_Number_Of_Transactions() { var blockWithTransactions = new BlockWithTransactions { Transactions = new [] { new Transaction() } }; Assert.Equal(blockWithTransactions.Transactions.Length, blockWithTransactions.TransactionCount()); }
public async Task When_Reprocessing_The_Previous_Block_Will_Ignore_Transactions_Already_Processed() { //execute same block twice await BlockProcessor.ProcessBlockAsync(BlockNumber); await BlockProcessor.ProcessBlockAsync(BlockNumber); //assert MockTransactionProcessor .Verify(b => b.ProcessTransactionAsync(_stubBlock, It.IsAny <Transaction>()), Times.Exactly(_stubBlock.TransactionCount())); }
public static MultiDimDictList errors = new MultiDimDictList(); //Keeps all the hashes that failed static void Main(string[] args) { string path = @"C:\Users\jsveistrup\source\repos\QuorumResults\QuorumResults\"; string fileName = "5slaves_1000users_puretrans-200003-300002_1.xml"; string outputFileName = "1000users_puretrans_part7"; string nodeIp = "51.141.118.214"; if (args.Length != 0) { path = args[0]; fileName = args[1]; outputFileName = args[2]; nodeIp = args[3]; } else { Console.WriteLine("No args has been inputed. Defaults loaded."); } Console.WriteLine("Starting: " + DateTime.Now); ArrayList inputs = getHashsesAndTimestamps(path + fileName); ArrayList results = new ArrayList(); var web3 = new Web3("http://" + nodeIp + ":22000"); Console.WriteLine("Number of hashses found: " + inputs.Count.ToString()); /*loops through all hashes in the result file and prepares the output array*/ foreach (Result rsObj in inputs) { Boolean skipToNextItem = false; HexBigInteger hexBlockNum = getBlockNum(rsObj.hash, web3).Result; if (hexBlockNum != null) { rsObj.blockNumber = (int)hexBlockNum.ToUlong(); } else { continue; //Error, and therefor skip to next item } /*Check if the block already has been retrieved */ foreach (Result obj in results) { if (obj.blockNumber == rsObj.blockNumber) { rsObj.txPerBlock = obj.txPerBlock; rsObj.minedTimestamp = obj.minedTimestamp; break; } else { BlockWithTransactions bc = getTransactions(hexBlockNum, web3).Result; if (bc != null) { rsObj.txPerBlock = bc.TransactionCount(); ulong ts = bc.Timestamp.ToUlong() * 1000; //multipies with 1000 to match format of sent timestamp rsObj.minedTimestamp = ts.ToString(); } else { skipToNextItem = true; break; } } } //First time if (results.Count == 0) { BlockWithTransactions bc = getTransactions(hexBlockNum, web3).Result; rsObj.txPerBlock = bc.TransactionCount(); ulong ts = bc.Timestamp.ToUlong() * 1000; //multipies with 1000 to match format of sent timestamp rsObj.minedTimestamp = ts.ToString(); } if (!skipToNextItem) { results.Add(rsObj); writeToFile(rsObj, path, outputFileName); Console.WriteLine("Count of results: " + results.Count.ToString() + ". Wrote to file: " + DateTime.Now + ": " + rsObj.hash + ", " + rsObj.sendTimestamp + ", " + rsObj.minedTimestamp + ", " + rsObj.blockNumber + ", " + rsObj.txPerBlock); } else { Console.WriteLine("Error: " + rsObj.hash); } } Console.WriteLine("End: " + DateTime.Now); }