chainqueue/tests/test_integrate.py

120 lines
3.4 KiB
Python
Raw Normal View History

2022-03-12 14:48:40 +01:00
# standard imports
2022-03-13 17:04:14 +01:00
import os
2022-03-12 14:48:40 +01:00
import tempfile
import unittest
import logging
2022-03-13 18:22:39 +01:00
import time
2022-03-12 14:48:40 +01:00
# external imports
from shep.store.file import SimpleFileStoreFactory
from chainlib.chain import ChainSpec
# local imports
from chainqueue import (
Store,
Status,
)
# test imports
from tests.common import (
MockCounter,
MockTokenCache,
MockCacheTokenTx,
MockContentStore,
2022-03-12 14:48:40 +01:00
)
from tests.base_shep import TestShepBase
logging.basicConfig(level=logging.DEBUG)
logg = logging.getLogger()
2022-03-12 14:48:40 +01:00
class TestIntegrateBase(TestShepBase):
2022-03-12 14:48:40 +01:00
def setUp(self):
self.path = tempfile.mkdtemp()
factory = SimpleFileStoreFactory(self.path).add
self.state = Status(factory)
content_store = MockContentStore()
counter = MockCounter()
chain_spec = ChainSpec('foo', 'bar', 42, 'baz')
self.cache = MockTokenCache()
self.store = Store(chain_spec, self.state, content_store, counter, cache=self.cache)
def test_integration_valid(self):
2022-03-15 09:06:39 +01:00
self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-12 14:48:40 +01:00
2022-03-13 17:04:14 +01:00
def test_state_default(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-13 17:04:14 +01:00
v = self.store.pending()
self.assertEqual(len(v), 1)
self.assertEqual(v[0], hx)
2022-03-12 14:48:40 +01:00
2022-03-13 17:04:14 +01:00
def test_state_enqueue(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-13 16:40:45 +01:00
self.store.get(hx)
self.store.enqueue(hx)
v = self.store.upcoming()
self.assertEqual(len(v), 1)
2022-03-13 17:04:14 +01:00
v = self.store.pending()
self.assertEqual(len(v), 0)
2022-03-13 16:40:45 +01:00
2022-03-13 16:45:48 +01:00
def test_state_defer(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 17:04:14 +01:00
self.store.fail(hx)
v = self.store.deferred()
self.assertEqual(len(v), 1)
self.assertEqual(v[0], hx)
def test_state_multiple(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 17:04:14 +01:00
self.store.fail(hx)
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 17:04:14 +01:00
self.store.fail(hx)
v = self.store.deferred()
self.assertEqual(len(v), 2)
def test_state_multiple_sort(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 17:04:14 +01:00
self.store.fail(hx)
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-13 17:04:14 +01:00
self.store.enqueue(hx)
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 16:45:48 +01:00
self.store.fail(hx)
2022-03-15 09:06:39 +01:00
self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-13 17:04:14 +01:00
v = self.store.deferred()
self.assertEqual(len(v), 2)
2022-03-13 16:45:48 +01:00
2022-03-13 18:22:39 +01:00
def test_state_date_threshold(self):
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 18:22:39 +01:00
self.store.fail(hx)
then = self.store.modified(s)
time.sleep(0.1)
2022-03-15 09:06:39 +01:00
(s, hx) = self.store.put(os.urandom(8).hex(), cache_adapter=MockCacheTokenTx)
2022-03-14 22:17:00 +01:00
self.store.reserve(hx)
2022-03-13 18:22:39 +01:00
self.store.fail(hx)
v = self.store.deferred(threshold=then)
self.assertEqual(len(v), 1)
2022-03-12 14:48:40 +01:00
if __name__ == '__main__':
unittest.main()