Test persistence of layers across restart
(node_factory)
| 564 | |
| 565 | |
| 566 | def test_layer_persistence(node_factory): |
| 567 | """Test persistence of layers across restart""" |
| 568 | l1, l2 = node_factory.line_graph(2, wait_for_announce=True, |
| 569 | opts={'disable-plugin': 'cln-xpay'}) |
| 570 | |
| 571 | assert l1.rpc.askrene_listlayers() == {'layers': []} |
| 572 | with pytest.raises(RpcError, match="Unknown layer"): |
| 573 | l1.rpc.askrene_listlayers('test_layer_persistence') |
| 574 | |
| 575 | l1.rpc.askrene_create_layer(layer='test_layer_persistence', persistent=True) |
| 576 | expect = {'layer': 'test_layer_persistence', |
| 577 | 'persistent': True, |
| 578 | 'disabled_nodes': [], |
| 579 | 'created_channels': [], |
| 580 | 'channel_updates': [], |
| 581 | 'constraints': [], |
| 582 | 'biases': [], |
| 583 | 'node_biases': []} |
| 584 | assert l1.rpc.askrene_listlayers('test_layer_persistence') == {'layers': [expect]} |
| 585 | |
| 586 | # Restart, (empty layer) should still be there. |
| 587 | l1.restart() |
| 588 | |
| 589 | assert l1.rpc.askrene_listlayers('test_layer_persistence') == {'layers': [expect]} |
| 590 | |
| 591 | # Re-creation of persistent layer is a noop. |
| 592 | l1.rpc.askrene_create_layer(layer='test_layer_persistence', persistent=True) |
| 593 | |
| 594 | # Populate it. |
| 595 | l1.rpc.askrene_disable_node('test_layer_persistence', l1.info['id']) |
| 596 | l1.rpc.askrene_update_channel('test_layer_persistence', "0x0x1/0", False) |
| 597 | l1.rpc.askrene_create_channel('test_layer_persistence', |
| 598 | l2.info['id'], |
| 599 | l1.info['id'], |
| 600 | '0x0x1', |
| 601 | '1000000sat') |
| 602 | l1.rpc.askrene_update_channel(layer='test_layer_persistence', |
| 603 | short_channel_id_dir='0x0x1/0', |
| 604 | htlc_minimum_msat=100, |
| 605 | htlc_maximum_msat=900000000, |
| 606 | fee_base_msat=1, |
| 607 | fee_proportional_millionths=2, |
| 608 | cltv_expiry_delta=18) |
| 609 | l1.rpc.askrene_update_channel(layer='test_layer_persistence', |
| 610 | short_channel_id_dir='0x0x1/0', |
| 611 | enabled=True, |
| 612 | cltv_expiry_delta=19) |
| 613 | l1.rpc.askrene_inform_channel('test_layer_persistence', |
| 614 | '0x0x1/1', |
| 615 | 100000, |
| 616 | 'unconstrained') |
| 617 | scid12 = first_scid(l1, l2) |
| 618 | scid12dir = f"{scid12}/{direction(l1.info['id'], l2.info['id'])}" |
| 619 | l1.rpc.askrene_inform_channel(layer='test_layer_persistence', |
| 620 | short_channel_id_dir=scid12dir, |
| 621 | amount_msat=12341235, |
| 622 | inform='constrained') |
| 623 |
nothing calls this directly
no test coverage detected