chainqueue

Blockchain transaction queue control
Log | Files | Refs | LICENSE

commit e457275128a7034b141f5fca56db035b11d95fd3
parent 0c9b42d0866e4e3a0230e6518b9bf0fd783f0c11
Author: lash <dev@holbrook.no>
Date:   Sat, 12 Mar 2022 14:12:02 +0000

WIP crossroads on hex vs bytes interpretation

Diffstat:
Mchainqueue/store.py | 4+++-
Mtests/common.py | 52+++++++++++++++++++++++++++++++++++++++++++++++++++-
Mtests/test_cache.py | 47++++-------------------------------------------
Mtests/test_integrate.py | 14++++++++++----
4 files changed, 68 insertions(+), 49 deletions(-)

diff --git a/chainqueue/store.py b/chainqueue/store.py @@ -36,8 +36,10 @@ class Store: for v in ['state', 'change', 'set', 'unset']: setattr(self, v, getattr(self.state_store, v)) + logg.debug('cache {}'.format(cache)) - def put(self, k, v, cache_adapter=CacheTx()): + + def put(self, k, v, cache_adapter=CacheTx): n = self.counter.next() t = datetime.datetime.now().timestamp() s = to_key(t, n, k) diff --git a/tests/common.py b/tests/common.py @@ -1,5 +1,11 @@ +# standard imports +import hashlib + # local imports -from chainqueue.cache import Cache +from chainqueue.cache import ( + Cache, + CacheTokenTx, + ) class MockCounter: @@ -38,3 +44,47 @@ class MockTokenCache(Cache): def count(self, cache_filter): self.last_filter = cache_filter + + +class MockCacheTokenTx(CacheTokenTx): + + def deserialize(self, signed_tx): + h = hashlib.sha1() + h.update(signed_tx + b'\x01') + z = h.digest() + nonce = int.from_bytes(z[:4], 'big') + token_value = int.from_bytes(z[4:8], 'big') + value = int.from_bytes(z[8:12], 'big') + + h = hashlib.sha1() + h.update(z) + z = h.digest() + sender = z.hex() + + h = hashlib.sha1() + h.update(z) + z = h.digest() + recipient = z.hex() + + h = hashlib.sha1() + h.update(z) + z = h.digest() + token = z.hex() + + h = hashlib.sha256() + h.update(z) + z = h.digest() + tx_hash = z.hex() + + #tx = CacheTokenTx(normalizer=self.normalizer) + self.init(tx_hash, nonce, sender, recipient, value) + self.set('src_token', token) + self.set('dst_token', token) + self.set('src_value', token_value) + self.set('dst_value', token_value) + self.confirm(42, 13, 1024000) + + return self + + + diff --git a/tests/test_cache.py b/tests/test_cache.py @@ -2,7 +2,6 @@ import os import logging import unittest -import hashlib import math # external imports @@ -18,53 +17,15 @@ from chainqueue.cache import ( # test imports from tests.base_shep import TestShepBase -from tests.common import MockTokenCache +from tests.common import ( + MockTokenCache, + MockTokenCacheTx, + ) logging.basicConfig(level=logging.DEBUG) logg = logging.getLogger() -class MockCacheTokenTx(CacheTokenTx): - - def deserialize(self, signed_tx): - h = hashlib.sha1() - h.update(signed_tx + b'\x01') - z = h.digest() - nonce = int.from_bytes(z[:4], 'big') - token_value = int.from_bytes(z[4:8], 'big') - value = int.from_bytes(z[8:12], 'big') - - h = hashlib.sha1() - h.update(z) - z = h.digest() - sender = z.hex() - - h = hashlib.sha1() - h.update(z) - z = h.digest() - recipient = z.hex() - - h = hashlib.sha1() - h.update(z) - z = h.digest() - token = z.hex() - - h = hashlib.sha256() - h.update(z) - z = h.digest() - tx_hash = z.hex() - - #tx = CacheTokenTx(normalizer=self.normalizer) - self.init(tx_hash, nonce, sender, recipient, value) - self.set('src_token', token) - self.set('dst_token', token) - self.set('src_value', token_value) - self.set('dst_value', token_value) - self.confirm(42, 13, 1024000) - - return self - - class MockNormalizer: def address(self, v): diff --git a/tests/test_integrate.py b/tests/test_integrate.py @@ -1,6 +1,7 @@ # standard imports import tempfile import unittest +import logging # external imports from shep.store.file import SimpleFileStoreFactory @@ -15,8 +16,13 @@ from chainqueue import ( # test imports from tests.common import ( MockCounter, - MockTokenCache + MockTokenCache, + MockCacheTokenTx, ) +from tests.base_shep import TestShepBase + +logging.basicConfig(level=logging.DEBUG) +logg = logging.getLogger() class MockContentStore: @@ -33,7 +39,7 @@ class MockContentStore: return self.store.get(k) -class TestShepBase(unittest.TestCase): +class TestIntegrateBase(TestShepBase): def setUp(self): self.path = tempfile.mkdtemp() @@ -46,8 +52,8 @@ class TestShepBase(unittest.TestCase): self.store = Store(chain_spec, self.state, content_store, counter, cache=self.cache) - def test_basic(self): - pass + def test_integration_valid(self): + self.store.put(b'foo'.hex(), b'bar'.hex(), cache_adapter=MockCacheTokenTx) if __name__ == '__main__':