mirror of
https://github.com/aljazceru/python-teos.git
synced 2025-12-17 14:14:22 +01:00
responder - wipes completed/expired data from the gatekeeper
This commit is contained in:
@@ -273,23 +273,27 @@ class Responder:
|
|||||||
if len(self.trackers) > 0 and block is not None:
|
if len(self.trackers) > 0 and block is not None:
|
||||||
txids = block.get("tx")
|
txids = block.get("tx")
|
||||||
|
|
||||||
|
completed_trackers = self.get_completed_trackers()
|
||||||
|
expired_trackers = self.get_expired_trackers(block.get("height"))
|
||||||
|
trackers_to_delete_gatekeeper = {
|
||||||
|
uuid: self.trackers[uuid].get("user_id") for uuid in completed_trackers + expired_trackers
|
||||||
|
}
|
||||||
|
|
||||||
if self.last_known_block == block.get("previousblockhash"):
|
if self.last_known_block == block.get("previousblockhash"):
|
||||||
self.check_confirmations(txids)
|
self.check_confirmations(txids)
|
||||||
Cleaner.delete_trackers(
|
Cleaner.delete_trackers(
|
||||||
self.get_completed_trackers(),
|
completed_trackers, block.get("height"), self.trackers, self.tx_tracker_map, self.db_manager
|
||||||
block.get("height"),
|
|
||||||
self.trackers,
|
|
||||||
self.tx_tracker_map,
|
|
||||||
self.db_manager,
|
|
||||||
)
|
)
|
||||||
Cleaner.delete_trackers(
|
Cleaner.delete_trackers(
|
||||||
self.get_expired_trackers(block.get("height")),
|
expired_trackers,
|
||||||
block.get("height"),
|
block.get("height"),
|
||||||
self.trackers,
|
self.trackers,
|
||||||
self.tx_tracker_map,
|
self.tx_tracker_map,
|
||||||
self.db_manager,
|
self.db_manager,
|
||||||
expired=True,
|
expired=True,
|
||||||
)
|
)
|
||||||
|
Cleaner.delete_gatekeeper_appointments(self.gatekeeper, trackers_to_delete_gatekeeper)
|
||||||
|
|
||||||
self.rebroadcast(self.get_txs_to_rebroadcast())
|
self.rebroadcast(self.get_txs_to_rebroadcast())
|
||||||
|
|
||||||
# NOTCOVERED
|
# NOTCOVERED
|
||||||
|
|||||||
@@ -307,7 +307,8 @@ def test_do_watch(temp_db_manager, gatekeeper, carrier, block_processor):
|
|||||||
responder.tx_tracker_map[tracker.penalty_txid] = [uuid]
|
responder.tx_tracker_map[tracker.penalty_txid] = [uuid]
|
||||||
responder.missed_confirmations[tracker.penalty_txid] = 0
|
responder.missed_confirmations[tracker.penalty_txid] = 0
|
||||||
responder.unconfirmed_txs.append(tracker.penalty_txid)
|
responder.unconfirmed_txs.append(tracker.penalty_txid)
|
||||||
responder.gatekeeper.registered_users[tracker.user_id].appointments.append(uuid)
|
# Assuming the appointment only took a single slot
|
||||||
|
responder.gatekeeper.registered_users[tracker.user_id].appointments[uuid] = 1
|
||||||
|
|
||||||
# We also need to store the info in the db
|
# We also need to store the info in the db
|
||||||
responder.db_manager.create_triggered_appointment_flag(uuid)
|
responder.db_manager.create_triggered_appointment_flag(uuid)
|
||||||
@@ -337,11 +338,17 @@ def test_do_watch(temp_db_manager, gatekeeper, carrier, block_processor):
|
|||||||
generate_blocks_w_delay(100 - CONFIRMATIONS_BEFORE_RETRY - 2)
|
generate_blocks_w_delay(100 - CONFIRMATIONS_BEFORE_RETRY - 2)
|
||||||
assert len(responder.unconfirmed_txs) == 0
|
assert len(responder.unconfirmed_txs) == 0
|
||||||
assert len(responder.trackers) == 15
|
assert len(responder.trackers) == 15
|
||||||
|
# Check they are not in the Gatekeeper either
|
||||||
|
for tracker in trackers[:5]:
|
||||||
|
assert len(responder.gatekeeper.registered_users[tracker.user_id].appointments) == 0
|
||||||
|
|
||||||
# CONFIRMATIONS_BEFORE_RETRY additional blocks should complete the rest
|
# CONFIRMATIONS_BEFORE_RETRY additional blocks should complete the rest
|
||||||
generate_blocks_w_delay(CONFIRMATIONS_BEFORE_RETRY)
|
generate_blocks_w_delay(CONFIRMATIONS_BEFORE_RETRY)
|
||||||
assert len(responder.unconfirmed_txs) == 0
|
assert len(responder.unconfirmed_txs) == 0
|
||||||
assert len(responder.trackers) == 0
|
assert len(responder.trackers) == 0
|
||||||
|
# Check they are not in the Gatekeeper either
|
||||||
|
for tracker in trackers[5:]:
|
||||||
|
assert len(responder.gatekeeper.registered_users[tracker.user_id].appointments) == 0
|
||||||
|
|
||||||
|
|
||||||
def test_check_confirmations(db_manager, gatekeeper, carrier, block_processor):
|
def test_check_confirmations(db_manager, gatekeeper, carrier, block_processor):
|
||||||
@@ -480,14 +487,16 @@ def test_get_expired_trackers(responder):
|
|||||||
dummy_tracker.user_id = user1_id
|
dummy_tracker.user_id = user1_id
|
||||||
expired_unconfirmed_trackers_15[uuid] = dummy_tracker
|
expired_unconfirmed_trackers_15[uuid] = dummy_tracker
|
||||||
responder.unconfirmed_txs.append(dummy_tracker.penalty_txid)
|
responder.unconfirmed_txs.append(dummy_tracker.penalty_txid)
|
||||||
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments.append(uuid)
|
# Assume the appointment only took a single slot
|
||||||
|
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments[uuid] = 1
|
||||||
|
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
uuid = uuid4().hex
|
uuid = uuid4().hex
|
||||||
dummy_tracker = create_dummy_tracker(penalty_rawtx=create_dummy_transaction().hex())
|
dummy_tracker = create_dummy_tracker(penalty_rawtx=create_dummy_transaction().hex())
|
||||||
dummy_tracker.user_id = user1_id
|
dummy_tracker.user_id = user1_id
|
||||||
expired_confirmed_trackers_15[uuid] = dummy_tracker
|
expired_confirmed_trackers_15[uuid] = dummy_tracker
|
||||||
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments.append(uuid)
|
# Assume the appointment only took a single slot
|
||||||
|
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments[uuid] = 1
|
||||||
|
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
uuid = uuid4().hex
|
uuid = uuid4().hex
|
||||||
@@ -495,7 +504,8 @@ def test_get_expired_trackers(responder):
|
|||||||
dummy_tracker.user_id = user2_id
|
dummy_tracker.user_id = user2_id
|
||||||
expired_unconfirmed_trackers_16[uuid] = dummy_tracker
|
expired_unconfirmed_trackers_16[uuid] = dummy_tracker
|
||||||
responder.unconfirmed_txs.append(dummy_tracker.penalty_txid)
|
responder.unconfirmed_txs.append(dummy_tracker.penalty_txid)
|
||||||
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments.append(uuid)
|
# Assume the appointment only took a single slot
|
||||||
|
responder.gatekeeper.registered_users[dummy_tracker.user_id].appointments[uuid] = 1
|
||||||
|
|
||||||
all_trackers = {}
|
all_trackers = {}
|
||||||
all_trackers.update(expired_confirmed_trackers_15)
|
all_trackers.update(expired_confirmed_trackers_15)
|
||||||
|
|||||||
Reference in New Issue
Block a user