|
8 | 8 | """
|
9 | 9 |
|
10 | 10 | from decimal import Decimal
|
| 11 | +from itertools import product |
| 12 | +import time |
11 | 13 |
|
12 | 14 | from test_framework.test_framework import BitcoinTestFramework
|
13 | 15 | from test_framework.util import (
|
| 16 | + assert_approx, |
14 | 17 | assert_equal,
|
15 | 18 | assert_greater_than_or_equal,
|
16 | 19 | assert_greater_than,
|
@@ -48,17 +51,17 @@ def set_test_params(self):
|
48 | 51 | self.supports_cli = False
|
49 | 52 |
|
50 | 53 | def run_test(self):
|
51 |
| - self.log.info('Get out of IBD for the minfeefilter test') |
52 |
| - self.nodes[0].generate(1) |
| 54 | + self.log.info('Get out of IBD for the minfeefilter and getpeerinfo tests') |
| 55 | + self.nodes[0].generate(101) |
53 | 56 | self.log.info('Connect nodes both way')
|
54 | 57 | connect_nodes(self.nodes[0], 1)
|
55 | 58 | connect_nodes(self.nodes[1], 0)
|
56 | 59 |
|
57 | 60 | self._test_connection_count()
|
| 61 | + self._test_getpeerinfo() |
58 | 62 | self._test_getnettotals()
|
59 | 63 | self._test_getnetworkinfo()
|
60 | 64 | self._test_getaddednodeinfo()
|
61 |
| - self._test_getpeerinfo() |
62 | 65 | self.test_service_flags()
|
63 | 66 | self._test_getnodeaddresses()
|
64 | 67 |
|
@@ -140,7 +143,18 @@ def _test_getaddednodeinfo(self):
|
140 | 143 | assert_raises_rpc_error(-24, "Node has not been added", self.nodes[0].getaddednodeinfo, '1.1.1.1')
|
141 | 144 |
|
142 | 145 | def _test_getpeerinfo(self):
|
| 146 | + # Create a few getpeerinfo last_block/last_transaction values. |
| 147 | + if self.is_wallet_compiled(): |
| 148 | + self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 1) |
| 149 | + self.nodes[1].generate(1) |
| 150 | + self.sync_all() |
| 151 | + time_now = int(time.time()) |
143 | 152 | peer_info = [x.getpeerinfo() for x in self.nodes]
|
| 153 | + # Verify last_block and last_transaction keys/values. |
| 154 | + for node, peer, field in product(range(self.num_nodes), range(2), ['last_block', 'last_transaction']): |
| 155 | + assert field in peer_info[node][peer].keys() |
| 156 | + if peer_info[node][peer][field] != 0: |
| 157 | + assert_approx(peer_info[node][peer][field], time_now, vspan=60) |
144 | 158 | # check both sides of bidirectional connection between nodes
|
145 | 159 | # the address bound to on one side will be the source address for the other node
|
146 | 160 | assert_equal(peer_info[0][0]['addrbind'], peer_info[1][0]['addr'])
|
|
0 commit comments