mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
pytest: add helper to send node a gossip query and get response(s).
Note the use of sqrt, which makes a 13 second timeout under Travis (180 second), or 7 seconds normally. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
38524d907b
commit
025b0e6a09
@ -8,12 +8,14 @@ from lightning import LightningRpc
|
||||
import json
|
||||
import logging
|
||||
import lzma
|
||||
import math
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import shutil
|
||||
import sqlite3
|
||||
import string
|
||||
import struct
|
||||
import subprocess
|
||||
import threading
|
||||
import time
|
||||
@ -750,6 +752,29 @@ class LightningNode(object):
|
||||
|
||||
wait_for(lambda: txid in self.bitcoin.rpc.getrawmempool())
|
||||
|
||||
def query_gossip(self, querytype, *args):
|
||||
"""Generate a gossip query, feed it into this node and get responses
|
||||
in hex"""
|
||||
query = subprocess.run(['devtools/mkquery',
|
||||
querytype] + [str(a) for a in args],
|
||||
check=True,
|
||||
timeout=TIMEOUT,
|
||||
stdout=subprocess.PIPE).stdout.strip()
|
||||
out = subprocess.run(['devtools/gossipwith',
|
||||
'--timeout-after={}'.format(int(math.sqrt(TIMEOUT) * 1000)),
|
||||
'{}@localhost:{}'.format(self.info['id'],
|
||||
self.port),
|
||||
query],
|
||||
check=True,
|
||||
timeout=TIMEOUT, stdout=subprocess.PIPE).stdout
|
||||
|
||||
msgs = []
|
||||
while len(out):
|
||||
length = struct.unpack('>H', out[0:2])[0]
|
||||
msgs.append(out[2:2 + length].hex())
|
||||
out = out[2 + length:]
|
||||
return msgs
|
||||
|
||||
|
||||
class NodeFactory(object):
|
||||
"""A factory to setup and start `lightningd` daemons.
|
||||
|
Loading…
Reference in New Issue
Block a user