Skip to content

Commit 3557aa4

Browse files
committed
test: add basic tests for sendmsgtopeer to rpc_net.py
1 parent a9a1d69 commit 3557aa4

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

test/functional/rpc_net.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def run_test(self):
6565
self.test_service_flags()
6666
self.test_getnodeaddresses()
6767
self.test_addpeeraddress()
68+
self.test_sendmsgtopeer()
6869

6970
def test_connection_count(self):
7071
self.log.info("Test getconnectioncount")
@@ -328,6 +329,37 @@ def test_addpeeraddress(self):
328329
addrs = node.getnodeaddresses(count=0) # getnodeaddresses re-runs the addrman checks
329330
assert_equal(len(addrs), 2)
330331

332+
def test_sendmsgtopeer(self):
333+
node = self.nodes[0]
334+
335+
self.restart_node(0)
336+
self.connect_nodes(0, 1)
337+
338+
self.log.info("Test sendmsgtopeer")
339+
self.log.debug("Send a valid message")
340+
with self.nodes[1].assert_debug_log(expected_msgs=["received: addr"]):
341+
node.sendmsgtopeer(peer_id=0, msg_type="addr", msg="FFFFFF")
342+
343+
self.log.debug("Test error for sending to non-existing peer")
344+
assert_raises_rpc_error(-1, "Error: Could not send message to peer", node.sendmsgtopeer, peer_id=100, msg_type="addr", msg="FF")
345+
346+
self.log.debug("Test that zero-length msg_type is allowed")
347+
node.sendmsgtopeer(peer_id=0, msg_type="addr", msg="")
348+
349+
self.log.debug("Test error for msg_type that is too long")
350+
assert_raises_rpc_error(-8, "Error: msg_type too long, max length is 12", node.sendmsgtopeer, peer_id=0, msg_type="long_msg_type", msg="FF")
351+
352+
self.log.debug("Test that unknown msg_type is allowed")
353+
node.sendmsgtopeer(peer_id=0, msg_type="unknown", msg="FF")
354+
355+
self.log.debug("Test that empty msg is allowed")
356+
node.sendmsgtopeer(peer_id=0, msg_type="addr", msg="FF")
357+
358+
self.log.debug("Test that oversized messages are allowed, but get us disconnected")
359+
zero_byte_string = b'\x00' * 4000001
360+
node.sendmsgtopeer(peer_id=0, msg_type="addr", msg=zero_byte_string.hex())
361+
self.wait_until(lambda: len(self.nodes[0].getpeerinfo()) == 0, timeout=10)
362+
331363

332364
if __name__ == '__main__':
333365
NetTest().main()

0 commit comments

Comments
 (0)