Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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))