test_randomtrackingdict.py
1 """ 2 Tests for RandomTrackingDict Class 3 """ 4 import random 5 import unittest 6 7 from time import time 8 9 10 class TestRandomTrackingDict(unittest.TestCase): 11 """ 12 Main protocol test case 13 """ 14 15 @staticmethod 16 def randString(): 17 """helper function for tests, generates a random string""" 18 retval = '' 19 for _ in range(32): 20 retval += chr(random.randint(0, 255)) 21 return retval 22 23 def test_check_randomtrackingdict(self): 24 """Check the logic of RandomTrackingDict class""" 25 from pybitmessage.randomtrackingdict import RandomTrackingDict 26 a = [] 27 k = RandomTrackingDict() 28 29 a.append(time()) 30 for i in range(50000): 31 k[self.randString()] = True 32 a.append(time()) 33 34 while k: 35 retval = k.randomKeys(1000) 36 if not retval: 37 self.fail("error getting random keys") 38 39 try: 40 k.randomKeys(100) 41 self.fail("bad") 42 except KeyError: 43 pass 44 for i in retval: 45 del k[i] 46 a.append(time()) 47 48 for x in range(len(a) - 1): 49 self.assertLess(a[x + 1] - a[x], 10)