From 41d3471c7f6dda23e8f6d2af2965167c4a91e3a8 Mon Sep 17 00:00:00 2001 From: lisa neigut Date: Wed, 1 Apr 2020 22:02:08 -0500 Subject: [PATCH] coin moves tests: save updates to disk If we don't save to disk, if the node restarts we'll lose them all and the resulting balance check at the end will be incorrect. --- tests/plugins/coin_movements.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/plugins/coin_movements.py b/tests/plugins/coin_movements.py index f633e0111..92069f511 100755 --- a/tests/plugins/coin_movements.py +++ b/tests/plugins/coin_movements.py @@ -2,12 +2,22 @@ from pyln.client import Plugin +import json +import os.path + + plugin = Plugin() @plugin.init() def init(configuration, options, plugin): - plugin.coin_moves = [] + if os.path.exists('moves.json'): + jd = {} + with open('moves.json', 'r') as f: + jd = f.read() + plugin.coin_moves = json.loads(jd) + else: + plugin.coin_moves = [] @plugin.subscribe("coin_movement") @@ -30,10 +40,21 @@ def notify_coin_movement(plugin, coin_movement, **kwargs): plugin.coin_moves.append(coin_movement) + # we save to disk so that we don't get borked if the node restarts + # assumes notification calls are synchronous (not thread safe) + with open('moves.json', 'w') as f: + f.write(json.dumps(plugin.coin_moves)) + @plugin.method('listcoinmoves_plugin') def return_moves(plugin): - return {'coin_moves': plugin.coin_moves} + result = [] + if os.path.exists('moves.json'): + jd = {} + with open('moves.json', 'r') as f: + jd = f.read() + result = json.loads(jd) + return {'coin_moves': result} plugin.run()