leveldir

Multi-level directory structure data stores in python3
git clone git://git.defalsify.org/python-leveldir.git
Info | Log | Files | Refs | LICENSE

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()