def test_add_then_update(self): cache = TxCache(self.store) bytedata_1 = bytes.fromhex(tx_hex_1) tx_id_1 = bitcoinx.hash_to_hex_str(bitcoinx.double_sha256(bytedata_1)) metadata_1 = TxData(position=11) cache.add([(tx_id_1, metadata_1, bytedata_1, TxFlags.StateDispatched)]) self.assertTrue(cache.is_cached(tx_id_1)) entry = cache.get_entry(tx_id_1) self.assertEqual( TxFlags.HasByteData | TxFlags.HasPosition | TxFlags.StateDispatched, entry.flags) self.assertIsNotNone(entry.bytedata) metadata_2 = TxData(fee=10, height=88) propagate_flags = TxFlags.HasFee | TxFlags.HasHeight cache.update([(tx_id_1, metadata_2, None, propagate_flags | TxFlags.HasPosition)]) entry = cache.get_entry(tx_id_1) expected_flags = propagate_flags | TxFlags.StateDispatched | TxFlags.HasByteData self.assertEqual( expected_flags, entry.flags, f"{TxFlags.to_repr(expected_flags)} != {TxFlags.to_repr(entry.flags)}" ) self.assertIsNotNone(entry.bytedata)
def test_get_unsynced_ids(self): cache = TxCache(self.store) bytedata_1 = bytes.fromhex(tx_hex_1) tx_hash_bytes_1 = bitcoinx.double_sha256(bytedata_1) tx_id_1 = bitcoinx.hash_to_hex_str(tx_hash_bytes_1) metadata_1 = TxData(height=11) cache.add([(tx_id_1, metadata_1, None, TxFlags.StateCleared)]) results = cache.get_unsynced_ids() self.assertEqual(1, len(results)) metadata_2 = TxData() cache.update([(tx_id_1, metadata_2, bytedata_1, TxFlags.HasByteData)]) results = cache.get_unsynced_ids() self.assertEqual(0, len(results))