rpc_estimatefee.py
1 #!/usr/bin/env python3 2 # Copyright (c) 2018-present The Bitcoin Core developers 3 # Distributed under the MIT software license, see the accompanying 4 # file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 """Test the estimatefee RPCs. 6 7 Test the following RPCs: 8 - estimatesmartfee 9 - estimaterawfee 10 """ 11 12 from test_framework.test_framework import BitcoinTestFramework 13 from test_framework.util import assert_raises_rpc_error 14 15 class EstimateFeeTest(BitcoinTestFramework): 16 def set_test_params(self): 17 self.num_nodes = 1 18 19 def run_test(self): 20 # missing required params 21 assert_raises_rpc_error(-1, "estimatesmartfee", self.nodes[0].estimatesmartfee) 22 assert_raises_rpc_error(-1, "estimaterawfee", self.nodes[0].estimaterawfee) 23 24 # cli handles wrong types differently 25 if not self.options.usecli: 26 # wrong type for conf_target 27 assert_raises_rpc_error(-3, "JSON value of type string is not of expected type number", self.nodes[0].estimatesmartfee, 'foo') 28 assert_raises_rpc_error(-3, "JSON value of type string is not of expected type number", self.nodes[0].estimaterawfee, 'foo') 29 # wrong type for estimatesmartfee(estimate_mode) 30 assert_raises_rpc_error(-3, "JSON value of type number is not of expected type string", self.nodes[0].estimatesmartfee, 1, 1) 31 # wrong type for estimaterawfee(threshold) 32 assert_raises_rpc_error(-3, "JSON value of type string is not of expected type number", self.nodes[0].estimaterawfee, 1, 'foo') 33 34 assert_raises_rpc_error(-8, 'Invalid estimate_mode parameter, must be one of: "unset", "economical", "conservative"', self.nodes[0].estimatesmartfee, 1, 'foo') 35 # extra params 36 assert_raises_rpc_error(-1, "estimatesmartfee", self.nodes[0].estimatesmartfee, 1, 'ECONOMICAL', 1) 37 assert_raises_rpc_error(-1, "estimaterawfee", self.nodes[0].estimaterawfee, 1, 1, 1) 38 39 # max value of 1008 per src/policy/fees/block_policy_estimator.h 40 assert_raises_rpc_error(-8, "Invalid conf_target, must be between 1 and 1008", self.nodes[0].estimaterawfee, 1009) 41 42 # valid calls 43 self.nodes[0].estimatesmartfee(1) 44 # self.nodes[0].estimatesmartfee(1, None) 45 self.nodes[0].estimatesmartfee(1, 'ECONOMICAL') 46 self.nodes[0].estimatesmartfee(1, 'unset') 47 self.nodes[0].estimatesmartfee(1, 'conservative') 48 49 self.nodes[0].estimaterawfee(1) 50 self.nodes[0].estimaterawfee(1, None) 51 self.nodes[0].estimaterawfee(1, 1) 52 53 54 if __name__ == '__main__': 55 EstimateFeeTest(__file__).main()