Skip to content

Commit

Permalink
Fix some jmdaemon test failures
Browse files Browse the repository at this point in the history
  • Loading branch information
kristapsk committed Nov 25, 2023
1 parent 3b78407 commit 2502ee4
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 76 deletions.
6 changes: 3 additions & 3 deletions src/jmdaemon/orderbookwatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,14 @@ def on_order_seen(self, counterparty: str, oid: int, ordertype: str,
" for an absoffer from " + counterparty)
return
self.db.execute(
'INSERT INTO orderbook VALUES(?, ?, ?, ?, ?, ?, ?);',
'INSERT INTO orderbook VALUES(?, ?, ?, ?, ?, ?, ?, ?);',
(counterparty, oid, ordertype, minsize, maxsize, txfee,
str(Decimal(cjfee)), # any parseable Decimal is a valid cjfee
minimum_tx_fee_rate))
except InvalidOperation:
log.debug("Got invalid cjfee: " + cjfee + " from " + counterparty)
log.debug("Got invalid cjfee: " + str(cjfee) + " from " + counterparty)
except Exception as e:
log.debug("Error parsing order " + oid + " from " + counterparty)
log.debug("Error parsing order " + str(oid) + " from " + counterparty)
log.debug("Exception was: " + repr(e))
finally:
self.dblock.release()
Expand Down
64 changes: 51 additions & 13 deletions src/jmdaemon/protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,63 @@
nickname = None

separator = " "
offertypes = {"reloffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (float, "cjfee")],
"absoffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (int, "cjfee")],
"swreloffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (float, "cjfee")],
"swabsoffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (int, "cjfee")],
"sw0reloffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (float, "cjfee")],
"sw0absoffer": [(int, "oid"), (int, "minsize"), (int, "maxsize"),
(int, "txfee"), (int, "cjfee")]}
offertypes = {
"reloffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(float, "cjfee"),
(int, "minimum_tx_fee_rate")
],
"absoffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(int, "cjfee"),
(int, "minimum_tx_fee_rate")
],
"swreloffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(float, "cjfee"),
(int, "minimum_tx_fee_rate")
],
"swabsoffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(int, "cjfee"),
(int, "minimum_tx_fee_rate")
],
"sw0reloffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(float, "cjfee"),
(int, "minimum_tx_fee_rate")
],
"sw0absoffer": [
(int, "oid"),
(int, "minsize"),
(int, "maxsize"),
(int, "txfee"),
(int, "cjfee"),
(int, "minimum_tx_fee_rate")
]
}

offername_list = list(offertypes.keys())

fidelity_bond_cmd_list = ["tbond"]

ORDER_KEYS = ['counterparty', 'oid', 'ordertype', 'minsize', 'maxsize', 'txfee',
'cjfee']
'cjfee', 'minimum_tx_fee_rate']

COMMAND_PREFIX = '!'
JOINMARKET_NICK_HEADER = 'J'
Expand Down
82 changes: 49 additions & 33 deletions test/jmdaemon/msgdata.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,56 @@
#orderbook
t_orderbook = [{u'counterparty': u'J5FA1Gj7Ln4vSGne', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J5CFffuuewjG44UJ', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J55z23xdjxJjC7er', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J54Ghp5PXCdY9H3t', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J559UPUSLLjHJpaB', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J5cBx1FwUVh9zzoO', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'}]
t_orderbook = [
{u'counterparty': u'J5FA1Gj7Ln4vSGne', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J5CFffuuewjG44UJ', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J55z23xdjxJjC7er', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J54Ghp5PXCdY9H3t', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J559UPUSLLjHJpaB', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J5cBx1FwUVh9zzoO', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700,
u'cjfee': u'0.0002', u'minimum_tx_fee_rate': 0}
]

t_dest_addr = "mvw1NazKDRbeNufFANqpYNAANafsMC2zVU"

t_chosen_orders = {u'J559UPUSLLjHJpaB': {u'cjfee': u'0.0002',
u'counterparty': u'J559UPUSLLjHJpaB',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000},
u'J55z23xdjxJjC7er': {u'cjfee': u'0.0002',
u'counterparty': u'J55z23xdjxJjC7er',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000},
u'J5CFffuuewjG44UJ': {u'cjfee': u'0.0002',
u'counterparty': u'J5CFffuuewjG44UJ',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000}}
t_chosen_orders = {
u'J559UPUSLLjHJpaB': {
u'cjfee': u'0.0002',
u'counterparty': u'J559UPUSLLjHJpaB',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000
},
u'J55z23xdjxJjC7er': {
u'cjfee': u'0.0002',
u'counterparty': u'J55z23xdjxJjC7er',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000
},
u'J5CFffuuewjG44UJ': {
u'cjfee': u'0.0002',
u'counterparty': u'J5CFffuuewjG44UJ',
u'maxsize': 599972700,
u'minsize': 7500000,
u'oid': 0,
u'ordertype': u'reloffer',
u'txfee': 1000
}
}

"""
2016-12-01 15:27:33,351 [MainThread ] [INFO ] total cj fee = 63000
Expand Down
69 changes: 42 additions & 27 deletions test/jmdaemon/test_orderbookwatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,36 +57,36 @@ def test_ob(badtopic):
ob.on_set_topic(deprecated)

@pytest.mark.parametrize(
"counterparty, oid, ordertype, minsize, maxsize, txfee, cjfee, expected",
"counterparty, oid, ordertype, minsize, maxsize, txfee, cjfee, minimum_tx_fee_rate, expected",
[
#good absoffer
("test", "0", "absoffer", "3000", "4000", "2", "300", True),
("test", "0", "absoffer", "3000", "4000", "2", "300", "0", True),
#good reloffer
("test", "0", "reloffer", "3000", "4000", "2", "0.3", True),
("test", "0", "reloffer", "3000", "4000", "2", "0.3", "0", True),
#dusty minsize OK
("test", "0", "reloffer", "1000", "4000", "2", "0.3", True),
("test", "0", "reloffer", "1000", "4000", "2", "0.3", "0", True),
#invalid oid
("test", "-2", "reloffer", "3000", "4000", "2", "0.3", False),
("test", "-2", "reloffer", "3000", "4000", "2", "0.3", "0", False),
#invalid minsize
("test", "2", "reloffer", "-3000", "4000", "2", "0.3", False),
("test", "2", "reloffer", "-3000", "4000", "2", "0.3", "0", False),
#invalid maxsize
("test", "2", "reloffer", "3000", "2200000000000000", "2", "0.3", False),
("test", "2", "reloffer", "3000", "2200000000000000", "2", "0.3", "0", False),
#invalid txfee
("test", "2", "reloffer", "3000", "4000", "-1", "0.3", False),
("test", "2", "reloffer", "3000", "4000", "-1", "0.3", "0", False),
#min bigger than max
("test", "2", "reloffer", "4000", "3000", "2", "0.3", False),
("test", "2", "reloffer", "4000", "3000", "2", "0.3", "0", False),
#non-integer absoffer
("test", "2", "absoffer", "3000", "4000", "2", "0.3", False),
("test", "2", "absoffer", "3000", "4000", "2", "0.3", "0", False),
#invalid syntax for cjfee
("test", "2", "reloffer", "3000", "4000", "2", "0.-1", False),
("test", "2", "reloffer", "3000", "4000", "2", "0.-1", "0", False),
#invalid type for oid
("test", "xxx", "reloffer", "3000", "4000", "2", "0.3", False),
("test", "xxx", "reloffer", "3000", "4000", "2", "0.3", "0", False),
])
def test_order_seen_cancel(counterparty, oid, ordertype, minsize, maxsize, txfee,
cjfee, expected):
cjfee, minimum_tx_fee_rate, expected):
ob = get_ob()
ob.on_order_seen(counterparty, oid, ordertype, minsize, maxsize,
txfee, cjfee)
txfee, cjfee, minimum_tx_fee_rate)
if expected:
#offer should now be in the orderbook
rows = ob.db.execute('SELECT * FROM orderbook;').fetchall()
Expand All @@ -100,21 +100,36 @@ def test_order_seen_cancel(counterparty, oid, ordertype, minsize, maxsize, txfee

def test_disconnect_leave():
ob = get_ob()
t_orderbook = [{u'counterparty': u'J5FA1Gj7Ln4vSGne', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J5CFffuuewjG44UJ', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J55z23xdjxJjC7er', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J54Ghp5PXCdY9H3t', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J559UPUSLLjHJpaB', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'},
{u'counterparty': u'J5cBx1FwUVh9zzoO', u'ordertype': u'reloffer', u'oid': 0,
u'minsize': 7500000, u'txfee': 1000, u'maxsize': 599972700, u'cjfee': u'0.0002'}]
t_orderbook = [
{u'counterparty': u'J5FA1Gj7Ln4vSGne', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J5CFffuuewjG44UJ', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J55z23xdjxJjC7er', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J54Ghp5PXCdY9H3t', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J559UPUSLLjHJpaB', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0},
{u'counterparty': u'J5cBx1FwUVh9zzoO', u'ordertype': u'reloffer',
u'oid': 0, u'minsize': 7500000, u'txfee': 1000,
u'maxsize': 599972700, u'cjfee': u'0.0002',
u'minimum_tx_fee_rate': 0}
]
for o in t_orderbook:
ob.on_order_seen(o['counterparty'], o['oid'], o['ordertype'],
o['minsize'], o['maxsize'], o['txfee'], o['cjfee'])
o['minsize'], o['maxsize'], o['txfee'], o['cjfee'],
o['minimum_tx_fee_rate'])
rows = ob.db.execute('SELECT * FROM orderbook;').fetchall()
orderbook = [dict([(k, o[k]) for k in ORDER_KEYS]) for o in rows]
assert len(orderbook) == 6
Expand Down

0 comments on commit 2502ee4

Please sign in to comment.