Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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.");
            }
        }