committed by
ZmnSCPxj, ZmnSCPxj jxPCSmnZ
1 changed files with 54 additions and 0 deletions
@ -0,0 +1,54 @@ |
|||
#!/usr/bin/env python3 |
|||
"""This plugin is used to check that forward_event calls are working correctly. |
|||
""" |
|||
from lightning import Plugin |
|||
|
|||
plugin = Plugin() |
|||
|
|||
|
|||
def check(forward, dbforward): |
|||
# After finding the corresponding notification record, this function will |
|||
# make some changes on mutative fields of this record to make this record |
|||
# same as the ideal format with given status. |
|||
record = forward |
|||
if record['status'] == 'offered': |
|||
if dbforward['status'] == 'local_failed': |
|||
record['failcode'] = dbforward['failcode'] |
|||
record['failreason'] = dbforward['failreason'] |
|||
elif dbforward['status'] != 'offered': |
|||
record['resolved_time'] = dbforward['resolved_time'] |
|||
record['status'] = dbforward['status'] |
|||
if record == dbforward: |
|||
return True |
|||
else: |
|||
return False |
|||
|
|||
|
|||
@plugin.init() |
|||
def init(configuration, options, plugin): |
|||
plugin.forward_list = [] |
|||
|
|||
|
|||
@plugin.subscribe("forward_event") |
|||
def notify_warning(plugin, forward_event): |
|||
# One forward payment may have many notification records for different status, |
|||
# but one forward payment has only one record in 'listforwards' eventrually. |
|||
plugin.log("receive a forward recored, status: {}, payment_hash: {}".format(forward_event['status'], forward_event['payment_hash'])) |
|||
plugin.forward_list.append(forward_event) |
|||
|
|||
|
|||
@plugin.method('recordcheck') |
|||
def record_lookup(payment_hash, status, dbforward, plugin): |
|||
# Check if we received all notifications when forward changed. |
|||
# This check is based on the records of 'listforwards' |
|||
plugin.log("recordcheck: payment_hash: {}, status: {}".format(payment_hash, status)) |
|||
for forward in plugin.forward_list: |
|||
if forward['payment_hash'] == payment_hash and forward['status'] == status: |
|||
plugin.log("record exists") |
|||
check_result = check(forward, dbforward) |
|||
return check_result |
|||
plugin.log("no record") |
|||
return False |
|||
|
|||
|
|||
plugin.run() |
Loading…
Reference in new issue