public Scenarios TestSendMany(int destinationsCount = 10, decimal amountPerDestination = 1, bool showStats = true) { if (!Enabled) { return(this); } CallRequest.SendMany requestFactory(IRpcService service) { List <SendMany.Destination> destinations = new List <SendMany.Destination>(destinationsCount); for (int i = 0; i < destinationsCount; i++) { destinations.Add(new SendMany.Destination(TestExecutor.TestData[service].GetAddress(i), amountPerDestination, i % 2 == 0)); } var amounts = destinations.ToDictionary(d => d.DestinationAddress, d => d.Amount); string jsonAmounts = JsonConvert.SerializeObject(amounts); var subtractFees = destinations.Where(dest => dest.SubtractFees).Select(dest => dest.DestinationAddress).Distinct().ToArray(); string jsonSubtractFees = null; // string jsonSubtractFees = JsonConvert.SerializeObject(subtractFees); CallRequest.SendMany request = new CallRequest.SendMany(string.Empty, jsonAmounts, 0, string.Empty, jsonSubtractFees, null, null, null); return(request); } using (var testResultCollector = new TestResultCollector($"SendMany: Sending to {destinationsCount} destinations {amountPerDestination} STRAT each.")) { this.CallNTimes(requestFactory, 1, this.options, testResultCollector); TestResult testResult = testResultCollector.Results.First().Results.First(); var parsedResponse = JsonConvert.DeserializeObject <JsonRpcResponse <string> >(testResult.PerformanceEntry.Result); string producedTxId = parsedResponse.Result; if (parsedResponse.Error != null) { testResultCollector.Writer.WriteLine($"Error: {testResult.Service.Name} - {parsedResponse.Error.Message}"); } else { if (showStats) { testResultCollector.Writer.WriteLine($"Tx-Id: {producedTxId}"); } } //new GetTransaction() // .SetOptions(this.options) // .GetSpecificTransaction(producedTxId, 1, true) // ; } return(this); }
public static TestRequest CreateRequestFor(MethodToTest methodToTest, NodeTestData testData) { switch (methodToTest) { case MethodToTest.GetBlockCount: return(new GetBlockCount()); case MethodToTest.GetTransaction: return(new GetTransaction(testData.GetTxId(), null)); case MethodToTest.GetRawTransaction: return(new GetRawTransaction(testData.GetTxId(), 1, null)); case MethodToTest.DecodeRawTransaction: return(new DecodeRawTransaction(testData.GetRawHex(), null)); case MethodToTest.ValidateAddress: return(new ValidateAddress(testData.GetAddress())); case MethodToTest.GetBlockHash: return(new GetBlockHash(testData.BlockCount)); case MethodToTest.GetBlock: return(new GetBlock(testData.BlockHash, null)); case MethodToTest.GetBalance: return(new GetBalance(null, null, null)); case MethodToTest.ListUnspent: return(new ListUnspent(null, null, null, null, null)); case MethodToTest.ListAddressGroupings: return(new ListAddressGroupings()); case MethodToTest.SendMany: List <Tests.SendMany.Destination> destinations = new List <Tests.SendMany.Destination> { new Tests.SendMany.Destination(testData.GetAddress(0), 1, false), new Tests.SendMany.Destination(testData.GetAddress(1), 1, true), new Tests.SendMany.Destination(testData.GetAddress(2), 1, true), }; var amounts = destinations.ToDictionary(d => d.DestinationAddress, d => d.Amount); string jsonAmounts = JsonConvert.SerializeObject(amounts); var subtractFees = destinations.Where(dest => dest.SubtractFees).Select(dest => dest.DestinationAddress).Distinct().ToArray(); string jsonSubtractFees = JsonConvert.SerializeObject(subtractFees); CallRequest.SendMany request = new CallRequest.SendMany(string.Empty, jsonAmounts, null, null, jsonSubtractFees, null, null, "UNSET"); return(request); default: throw new Exception("Unknown method to test."); } }