written test case randomtrackingdict dict module
This commit is contained in:
parent
9fe4ad0489
commit
a2ab0a02dc
|
@ -1,7 +1,6 @@
|
||||||
"""
|
"""
|
||||||
Track randomize ordered dict
|
Track randomize ordered dict
|
||||||
"""
|
"""
|
||||||
import random
|
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
|
@ -128,41 +127,3 @@ class RandomTrackingDict(object):
|
||||||
self.pendingLen += 1
|
self.pendingLen += 1
|
||||||
self.lastPoll = time()
|
self.lastPoll = time()
|
||||||
return retval
|
return retval
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
|
||||||
# pylint: disable=redefined-outer-name
|
|
||||||
def randString():
|
|
||||||
"""helper function for tests, generates a random string"""
|
|
||||||
retval = b''
|
|
||||||
for _ in range(32):
|
|
||||||
retval += chr(random.randint(0, 255))
|
|
||||||
return retval
|
|
||||||
|
|
||||||
a = []
|
|
||||||
k = RandomTrackingDict()
|
|
||||||
d = {}
|
|
||||||
|
|
||||||
print "populating random tracking dict"
|
|
||||||
a.append(time())
|
|
||||||
for i in range(50000):
|
|
||||||
k[randString()] = True
|
|
||||||
a.append(time())
|
|
||||||
print "done"
|
|
||||||
|
|
||||||
while k:
|
|
||||||
retval = k.randomKeys(1000)
|
|
||||||
if not retval:
|
|
||||||
print "error getting random keys"
|
|
||||||
try:
|
|
||||||
k.randomKeys(100)
|
|
||||||
print "bad"
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
for i in retval:
|
|
||||||
del k[i]
|
|
||||||
a.append(time())
|
|
||||||
|
|
||||||
for x in range(len(a) - 1):
|
|
||||||
print "%i: %.3f" % (x, a[x + 1] - a[x])
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ from binascii import hexlify, unhexlify
|
||||||
from os import listdir, makedirs, path, remove, rmdir
|
from os import listdir, makedirs, path, remove, rmdir
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
|
|
||||||
|
from debug import logger
|
||||||
from paths import lookupAppdataFolder
|
from paths import lookupAppdataFolder
|
||||||
from storage import InventoryItem, InventoryStorage
|
from storage import InventoryItem, InventoryStorage
|
||||||
|
|
||||||
|
@ -162,7 +163,7 @@ class FilesystemInventory(InventoryStorage):
|
||||||
newInventory[streamNumber][hashId] = InventoryItem(
|
newInventory[streamNumber][hashId] = InventoryItem(
|
||||||
objectType, streamNumber, None, expiresTime, tag)
|
objectType, streamNumber, None, expiresTime, tag)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print "error loading %s" % (hexlify(hashId))
|
logger.warning('error loading %s', hexlify(hashId))
|
||||||
self._inventory = newInventory
|
self._inventory = newInventory
|
||||||
# for i, v in self._inventory.items():
|
# for i, v in self._inventory.items():
|
||||||
# print "loaded stream: %s, %i items" % (i, len(v))
|
# print "loaded stream: %s, %i items" % (i, len(v))
|
||||||
|
|
52
src/tests/test_randomtrackingdict.py
Normal file
52
src/tests/test_randomtrackingdict.py
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
"""
|
||||||
|
Tests for RandomTrackingDict class
|
||||||
|
"""
|
||||||
|
import random
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from time import time
|
||||||
|
|
||||||
|
|
||||||
|
class TestRandomTrackingDict(unittest.TestCase):
|
||||||
|
"""
|
||||||
|
Main protocol test case
|
||||||
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def randString():
|
||||||
|
"""helper function for tests, generates a random string"""
|
||||||
|
retval = b''
|
||||||
|
for _ in range(32):
|
||||||
|
retval += chr(random.randint(0, 255))
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def test_check_randomtrackingdict(self):
|
||||||
|
"""Check the logic of RandomTrackingDict class"""
|
||||||
|
# from network import RandomTrackingDict
|
||||||
|
# from pybitmessage.network.randomtrackingdict import RandomTrackingDict
|
||||||
|
# from network.randomtrackingdict import RandomTrackingDict
|
||||||
|
from pybitmessage import network
|
||||||
|
a = []
|
||||||
|
k = network.randomtrackingdict.RandomTrackingDict()
|
||||||
|
|
||||||
|
a.append(time())
|
||||||
|
for i in range(50000):
|
||||||
|
k[self.randString()] = True
|
||||||
|
a.append(time())
|
||||||
|
|
||||||
|
while k:
|
||||||
|
retval = k.randomKeys(1000)
|
||||||
|
if not retval:
|
||||||
|
self.fail("error getting random keys")
|
||||||
|
|
||||||
|
try:
|
||||||
|
k.randomKeys(100)
|
||||||
|
self.fail("bad")
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
for i in retval:
|
||||||
|
del k[i]
|
||||||
|
a.append(time())
|
||||||
|
|
||||||
|
for x in range(len(a) - 1):
|
||||||
|
self.assertLess(a[x + 1] - a[x], 10)
|
Reference in New Issue
Block a user