test_numdir.py (1920B)
1 # standard imports 2 import unittest 3 import tempfile 4 import shutil 5 import logging 6 import os 7 8 # local imports 9 from leveldir.numeric import NumDir 10 11 logging.basicConfig(level=logging.DEBUG) 12 logg = logging.getLogger() 13 14 15 16 class NumDirTest(unittest.TestCase): 17 18 def setUp(self): 19 self.dir = tempfile.mkdtemp() 20 21 22 def tearDown(self): 23 shutil.rmtree(self.dir) 24 logg.debug('cleaned numdir root {}'.format(self.dir)) 25 26 27 def test_path(self): 28 self.numdir = NumDir(os.path.join(self.dir, 'n'), [1000, 100]) 29 logg.debug('setup numdir root {}'.format(self.dir)) 30 path = self.numdir.to_filepath(1337) 31 path_parts = [] 32 logg.debug(path) 33 (path, three) = os.path.split(path) 34 (path, two) = os.path.split(path) 35 (path, one) = os.path.split(path) 36 self.assertEqual(three, '1337') 37 self.assertEqual(two, '1300') 38 self.assertEqual(one, '1000') 39 40 41 def test_invalid_thresholds(self): 42 with self.assertRaises(ValueError): 43 self.numdir = NumDir(os.path.join(self.dir, 'n'), [100, 1000]) 44 45 with self.assertRaises(ValueError): 46 self.numdir = NumDir(os.path.join(self.dir, 'n'), []) 47 48 49 def test_single_level(self): 50 self.numdir = NumDir(os.path.join(self.dir, 'n'), [1000]) 51 b = os.urandom(32) 52 self.numdir.add(1337, b) 53 b = os.urandom(32) 54 self.numdir.add(666, b) 55 b = os.urandom(32) 56 self.numdir.add(100000, b) 57 58 self.assertEqual(self.numdir.count(), 3) 59 60 61 def test_multilevel(self): 62 self.numdir = NumDir(os.path.join(self.dir, 'n'), [1000, 100, 10]) 63 b = os.urandom(32) 64 self.numdir.add(1337, b) 65 b = os.urandom(32) 66 self.numdir.add(666, b) 67 b = os.urandom(32) 68 self.numdir.add(100000, b) 69 70 self.assertEqual(self.numdir.count(), 3) 71 72 73 if __name__ == '__main__': 74 unittest.main()