json-rpc: Create test showcasing the null-accounting issue

There is an issue with the way we retrieve the channel accounting info
that will result in always showing 0 for all stats. This tests for it
and the next commit will fix it.
This commit is contained in:
Christian Decker
2018-10-12 14:52:07 +02:00
committed by Rusty Russell
parent ea4308ce52
commit 2354b3e706

View File

@@ -974,3 +974,33 @@ def test_forward_pad_fees_and_cltv(node_factory, bitcoind):
l1.rpc.sendpay(route, rhash)
l1.rpc.waitsendpay(rhash)
assert only_one(l3.rpc.listinvoices('test_forward_pad_fees_and_cltv')['invoices'])['status'] == 'paid'
@pytest.mark.xfail(strict=True)
def test_forward_stats(node_factory):
l1, l2, l3 = node_factory.line_graph(3, announce=True)
inv = l3.rpc.invoice(100000, "first", "desc")['bolt11']
l1.rpc.pay(inv)
inchan = l2.rpc.listpeers(l1.info['id'])['peers'][0]['channels'][0]
outchan = l2.rpc.listpeers(l3.info['id'])['peers'][0]['channels'][0]
def extract_stats(c):
return {k: v for k, v in c.items() if 'in_' in k or 'out_' in k}
instats = extract_stats(inchan)
outstats = extract_stats(outchan)
# Check that we correctly account channel changes
assert instats['in_payments_offered'] == 1
assert instats['in_payments_fulfilled'] == 1
assert instats['in_msatoshi_offered'] >= 100000
assert instats['in_msatoshi_offered'] == instats['in_msatoshi_fulfilled']
assert outstats['out_payments_offered'] == 1
assert outstats['out_payments_fulfilled'] == 1
assert outstats['out_msatoshi_offered'] >= 100000
assert outstats['out_msatoshi_offered'] == outstats['out_msatoshi_fulfilled']
assert outstats['out_msatoshi_fulfilled'] < instats['in_msatoshi_fulfilled']