From 9a2d73891b9caec0fb7e2441d2b408c41aa62bc6 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 15 Jun 2021 06:37:38 +0930 Subject: [PATCH] pyln-client: hack in test that listnodes returns the same old/new. It sometimes fails because the two race, and sometimes because there's randomness, but it generally works (and doesn't fail systemically). We remove this before the final merge. Signed-off-by: Rusty Russell --- contrib/pyln-client/pyln/client/lightning.py | 35 +++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/contrib/pyln-client/pyln/client/lightning.py b/contrib/pyln-client/pyln/client/lightning.py index 363435543..c287b91cb 100644 --- a/contrib/pyln-client/pyln/client/lightning.py +++ b/contrib/pyln-client/pyln/client/lightning.py @@ -979,7 +979,40 @@ class LightningRpc(UnixDomainSocketRpc): payload = { "id": node_id } - return self.call("listnodes", payload) + + # This is a hack to make sure old and new routines return the same result. + e1 = None + ret1 = None + err = None + try: + ret1 = self.call("listnodes", payload) + except RpcError as e: + err = e + e1 = e.error + e2 = None + ret2 = None + try: + ret2 = self.call("listnodesold", payload) + except RpcError as e: + e2 = e.error + + print("new listnodes: {} exception {}".format(ret1, e1)) + print("old listnodes: {} exception {}".format(ret2, e2)) + + # Order is arbitrary + def node_key(n): + return n['nodeid'] + + if ret1: + ret1['nodes'].sort(key=node_key) + if ret2: + ret2['nodes'].sort(key=node_key) + assert ret1 == ret2 + assert e1 == e2 + + if err is not None: + raise err + return ret1 def listpays(self, bolt11=None, payment_hash=None): """