mirror of
https://github.com/basicswap/basicswap.git
synced 2024-11-16 15:58:17 +00:00
debug: Add ui option to schedule bid actions.
This commit is contained in:
parent
9ee6669179
commit
28fc4817c0
6 changed files with 86 additions and 33 deletions
|
@ -236,6 +236,7 @@ class BasicSwap(BaseApp):
|
|||
self.check_xmr_swaps_seconds = self.get_int_setting('check_xmr_swaps_seconds', 20, 1, 10 * 60)
|
||||
self.startup_tries = self.get_int_setting('startup_tries', 21, 1, 100) # Seconds waited for will be (x(1 + x+1) / 2
|
||||
self.debug_ui = self.settings.get('debug_ui', False)
|
||||
self._debug_cases = []
|
||||
self._last_checked_progress = 0
|
||||
self._last_checked_watched = 0
|
||||
self._last_checked_expired = 0
|
||||
|
@ -2098,6 +2099,16 @@ class BasicSwap(BaseApp):
|
|||
action_type=action_type,
|
||||
linked_id=linked_id)
|
||||
session.add(action)
|
||||
for debug_case in self._debug_cases:
|
||||
bid_id, debug_ind = debug_case
|
||||
if bid_id == linked_id and debug_ind == DebugTypes.DUPLICATE_ACTIONS:
|
||||
action = Action(
|
||||
active_ind=1,
|
||||
created_at=now,
|
||||
trigger_at=now + delay + 3,
|
||||
action_type=action_type,
|
||||
linked_id=linked_id)
|
||||
session.add(action)
|
||||
|
||||
def createAction(self, delay: int, action_type: int, linked_id: bytes) -> None:
|
||||
# self.log.debug('createAction %d %s', action_type, linked_id.hex())
|
||||
|
@ -5505,12 +5516,15 @@ class BasicSwap(BaseApp):
|
|||
txid = bytes.fromhex(ci_from.publishTx(xmr_swap.a_lock_spend_tx))
|
||||
self.log.debug('Submitted lock spend txn %s to %s chain for bid %s', txid.hex(), ci_from.coin_name(), bid_id.hex())
|
||||
self.logBidEvent(bid.bid_id, EventLogTypes.LOCK_TX_A_SPEND_TX_PUBLISHED, '', session)
|
||||
bid.xmr_a_lock_spend_tx = SwapTx(
|
||||
bid_id=bid_id,
|
||||
tx_type=TxTypes.XMR_SWAP_A_LOCK_SPEND,
|
||||
txid=txid,
|
||||
)
|
||||
bid.xmr_a_lock_spend_tx.setState(TxStates.TX_NONE)
|
||||
if bid.xmr_a_lock_spend_tx is None:
|
||||
bid.xmr_a_lock_spend_tx = SwapTx(
|
||||
bid_id=bid_id,
|
||||
tx_type=TxTypes.XMR_SWAP_A_LOCK_SPEND,
|
||||
txid=txid,
|
||||
)
|
||||
bid.xmr_a_lock_spend_tx.setState(TxStates.TX_NONE)
|
||||
else:
|
||||
self.log.warning('Chain A lock TX %s already exists for bid %s', bid.xmr_a_lock_spend_tx.txid.hex(), bid_id.hex())
|
||||
|
||||
self.saveBidInSession(bid_id, bid, session, xmr_swap, save_in_progress=offer)
|
||||
|
||||
|
@ -6182,6 +6196,8 @@ class BasicSwap(BaseApp):
|
|||
def manualBidUpdate(self, bid_id: bytes, data):
|
||||
self.log.info('Manually updating bid %s', bid_id.hex())
|
||||
self.mxDB.acquire()
|
||||
|
||||
add_bid_action = -1
|
||||
try:
|
||||
bid, offer = self.getBidAndOffer(bid_id)
|
||||
ensure(bid, 'Bid not found {}'.format(bid_id.hex()))
|
||||
|
@ -6190,7 +6206,12 @@ class BasicSwap(BaseApp):
|
|||
has_changed = False
|
||||
if bid.state != data['bid_state']:
|
||||
bid.setState(data['bid_state'])
|
||||
self.log.debug('Set state to %s', strBidState(bid.state))
|
||||
self.log.warning('Set state to %s', strBidState(bid.state))
|
||||
has_changed = True
|
||||
|
||||
if data['bid_action'] != -1:
|
||||
self.log.warning('Adding action', ActionTypes(data['bid_action']).name)
|
||||
add_bid_action = ActionTypes(data['bid_action'])
|
||||
has_changed = True
|
||||
|
||||
if bid.debug_ind != data['debug_ind']:
|
||||
|
@ -6211,6 +6232,10 @@ class BasicSwap(BaseApp):
|
|||
if bid.state and isActiveBidState(bid.state):
|
||||
activate_bid = True
|
||||
|
||||
if add_bid_action > -1:
|
||||
delay = self.get_delay_event_seconds()
|
||||
self.createActionInSession(delay, add_bid_action, bid_id, session)
|
||||
|
||||
if activate_bid:
|
||||
self.activateBid(session, bid)
|
||||
else:
|
||||
|
@ -7074,8 +7099,13 @@ class BasicSwap(BaseApp):
|
|||
|
||||
xmr_swap.a_lock_refund_swipe_tx = ci.setTxSignature(spend_tx, witness_stack)
|
||||
|
||||
def setBidDebugInd(self, bid_id: bytes, debug_ind) -> None:
|
||||
def setBidDebugInd(self, bid_id: bytes, debug_ind, add_to_bid: bool = True) -> None:
|
||||
self.log.debug('Bid %s Setting debug flag: %s', bid_id.hex(), debug_ind)
|
||||
|
||||
self._debug_cases.append((bid_id, debug_ind))
|
||||
if add_to_bid is False:
|
||||
return
|
||||
|
||||
bid = self.getBid(bid_id)
|
||||
bid.debug_ind = debug_ind
|
||||
|
||||
|
|
|
@ -198,6 +198,7 @@ class DebugTypes(IntEnum):
|
|||
SKIP_LOCK_TX_REFUND = auto()
|
||||
SEND_LOCKED_XMR = auto()
|
||||
B_LOCK_TX_MISSED_SEND = auto()
|
||||
DUPLICATE_ACTIONS = auto()
|
||||
|
||||
|
||||
class NotificationTypes(IntEnum):
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{% include 'header.html' %}
|
||||
{% from 'style.html' import input_arrow_down_svg %}
|
||||
|
||||
<div class="container mx-auto">
|
||||
<section class="p-5 mt-5">
|
||||
<div class="flex flex-wrap items-center -m-2">
|
||||
|
@ -503,10 +505,7 @@
|
|||
<tr class="opacity-100 text-gray-500 dark:text-gray-100">
|
||||
<td class="py-3 px-6 bold">View Transaction:</td>
|
||||
<td class="py-3 px-6 bold">
|
||||
<div class="relative">
|
||||
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
||||
</svg>
|
||||
<div class="relative">{{ input_arrow_down_svg | safe }}
|
||||
<select class="bg-gray-50 text-gray-900 appearance-none pr-10 dark:bg-gray-500 dark:text-white border border-gray-300 dark:border-gray-400 dark:text-gray-50 dark:placeholder-gray-50 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 focus:ring-0" name="view_tx">
|
||||
{% if data.txns|length %} {% for tx in data.txns %}
|
||||
<option value="{{ tx.txid }}" {% if data.view_tx_ind==tx.txid %} selected{% endif %}>{{ tx.type }} {{ tx.txid }}</option>
|
||||
|
@ -723,10 +722,7 @@
|
|||
<tr class="opacity-100 text-gray-500 dark:text-gray-100">
|
||||
<td class="py-3 px-6 bold">Change Bid State:</td>
|
||||
<td class="py-3 px-6">
|
||||
<div class="relative">
|
||||
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
||||
</svg>
|
||||
<div class="relative">{{ input_arrow_down_svg | safe }}
|
||||
<select class="bg-gray-50 text-gray-900 appearance-none pr-10 dark:bg-gray-500 dark:text-white border border-gray-300 dark:border-gray-400 dark:text-gray-50 dark:placeholder-gray-50 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 focus:ring-0" name="new_state">
|
||||
{% for s in data.bid_states %}
|
||||
<option value="{{ s[0] }}" {% if data.bid_state_ind==s[0] %} selected{% endif %}>{{ s[1] }}</option>
|
||||
|
@ -736,13 +732,22 @@
|
|||
</td>
|
||||
</tr>
|
||||
{% if data.debug_ui == true %}
|
||||
<tr class="opacity-100 text-gray-500 dark:text-gray-100">
|
||||
<td class="py-3 px-6 bold">Add Bid Action:</td>
|
||||
<td class="py-3 px-6">
|
||||
<div class="relative">{{ input_arrow_down_svg | safe }}
|
||||
<select class="bg-gray-50 text-gray-900 appearance-none pr-10 dark:bg-gray-500 dark:text-white border border-gray-300 dark:border-gray-400 dark:text-gray-50 dark:placeholder-gray-50 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 focus:ring-0" name="new_action">
|
||||
{% for a in data.bid_actions %}
|
||||
<option value="{{ a[0] }}">{{ a[1] }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="opacity-100 text-gray-500 dark:text-gray-100">
|
||||
<td class="py-3 px-6 bold">Debug Option</td>
|
||||
<td class="py-3 px-6">
|
||||
<div class="relative">
|
||||
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
||||
</svg>
|
||||
<div class="relative">{{ input_arrow_down_svg | safe }}
|
||||
<select class="bg-gray-50 text-gray-900 appearance-none pr-10 dark:bg-gray-500 dark:text-white border border-gray-300 dark:border-gray-400 dark:text-gray-50 dark:placeholder-gray-50 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 focus:ring-0" name="debugind">
|
||||
<option{% if data.debug_ind=="-1" %} selected{% endif %} value="-1">None</option>
|
||||
{% for a in data.debug_options %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2022-2023 tecnovert
|
||||
# Copyright (c) 2022-2024 tecnovert
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
|
@ -10,6 +10,7 @@ from .util import (
|
|||
get_data_entry,
|
||||
have_data_entry,
|
||||
get_data_entry_or,
|
||||
listBidActions,
|
||||
listBidStates,
|
||||
listOldBidStates,
|
||||
set_pagination_filters,
|
||||
|
@ -73,6 +74,7 @@ def page_bid(self, url_split, post_string):
|
|||
elif b'edit_bid_submit' in form_data:
|
||||
data = {
|
||||
'bid_state': int(form_data[b'new_state'][0]),
|
||||
'bid_action': int(get_data_entry_or(form_data, 'new_action', -1)),
|
||||
'debug_ind': int(get_data_entry_or(form_data, 'debugind', -1)),
|
||||
'kbs_other': get_data_entry_or(form_data, 'kbs_other', None),
|
||||
}
|
||||
|
@ -107,6 +109,14 @@ def page_bid(self, url_split, post_string):
|
|||
if len(data['addr_from_label']) > 0:
|
||||
data['addr_from_label'] = '(' + data['addr_from_label'] + ')'
|
||||
|
||||
page_data = {
|
||||
'bid_states': listBidStates(),
|
||||
'bid_actions': []
|
||||
}
|
||||
|
||||
if swap_client.debug_ui:
|
||||
data['bid_actions'] = [(-1, 'None'), ] + listBidActions()
|
||||
|
||||
template = server.env.get_template('bid_xmr.html' if offer.swap_type == SwapTypes.XMR_SWAP else 'bid.html')
|
||||
return self.render_template(template, {
|
||||
'bid_id': bid_id.hex(),
|
||||
|
@ -175,9 +185,8 @@ def page_bids(self, url_split, post_string, sent=False, available=False, receive
|
|||
bids = swap_client.listBids(sent=sent, filters=filters)
|
||||
|
||||
page_data = {
|
||||
'bid_states': listBidStates()
|
||||
'bid_states': listBidStates(),
|
||||
}
|
||||
|
||||
template = server.env.get_template('bids.html')
|
||||
return self.render_template(template, {
|
||||
'page_type_sent': 'Bids Sent' if sent else '',
|
||||
|
|
|
@ -16,16 +16,17 @@ from basicswap.chainparams import (
|
|||
chainparams,
|
||||
)
|
||||
from basicswap.basicswap_util import (
|
||||
TxTypes,
|
||||
TxStates,
|
||||
ActionTypes,
|
||||
BidStates,
|
||||
SwapTypes,
|
||||
strTxType,
|
||||
DebugTypes,
|
||||
strTxState,
|
||||
strBidState,
|
||||
TxLockTypes,
|
||||
getLastBidState,
|
||||
strBidState,
|
||||
strTxState,
|
||||
strTxType,
|
||||
SwapTypes,
|
||||
TxLockTypes,
|
||||
TxStates,
|
||||
TxTypes,
|
||||
)
|
||||
|
||||
from basicswap.protocols.xmr_swap_1 import getChainBSplitKey, getChainBRemoteSplitKey
|
||||
|
@ -145,6 +146,13 @@ def listBidStates():
|
|||
return rv
|
||||
|
||||
|
||||
def listBidActions():
|
||||
rv = []
|
||||
for a in ActionTypes:
|
||||
rv.append((int(a), a.name))
|
||||
return rv
|
||||
|
||||
|
||||
def describeBid(swap_client, bid, xmr_swap, offer, xmr_offer, bid_events, edit_bid, show_txns, view_tx_ind=None, for_api=False, show_lock_transfers=False):
|
||||
ci_from = swap_client.ci(Coins(offer.coin_from))
|
||||
ci_to = swap_client.ci(Coins(offer.coin_to))
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
import json
|
||||
import time
|
||||
|
||||
from urllib.request import urlopen
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.select import Select
|
||||
from util import get_driver
|
||||
from urllib.request import urlopen
|
||||
|
||||
from basicswap.util import dumpje
|
||||
from util import get_driver
|
||||
|
||||
|
||||
def test_wallets(driver):
|
||||
|
|
Loading…
Reference in a new issue