def test_81_protect(self): flags = mdbm.MDBM_O_RDWR | mdbm.MDBM_PROTECT self.dbm_prot = mdbm.open(self.path, flags, self.mode, 0, 0) k = str(random.randint(0, 65535)) rv = self.dbm_prot.protect(mdbm.MDBM_PROT_READ) self.assertTrue((rv >= 0)) rv = self.dbm_prot.get_lockmode() self.assertTrue((rv >= 0)) v = str(random.randint(0, 65535)) rv = self.dbm_prot.store(k, v, mdbm.MDBM_REPLACE) self.assertTrue( rv, "failred to store, \ rv=%d, key=%s, val=%s" % (rv, k, v)) rv = self.dbm_prot.protect(mdbm.MDBM_PROT_WRITE) self.assertTrue((rv >= 0)) rv = self.dbm_prot.fetch(str(1)) self.assertTrue(rv, "rv=%s" % rv) rv = self.dbm_prot.protect(mdbm.MDBM_PROT_NONE) self.assertTrue((rv >= 0)) self.dbm_prot.close()
def mdbm_fetch(limit): path = "/tmp/test_py_benchmark_%s.mdbm" % limit flags = mdbm.MDBM_O_RDWR mode = 0o644 # means 0644 dbm = mdbm.open(path, flags, mode, 0, 0) for i in range(0, limit): k = str(random.randrange(0, limit - 1)) v = dbm.fetch(k) if len(v) < 1: return False dbm.close() return True
def setUp(self): self.path = "/tmp/test_py.mdbm" self.path_pure = "/tmp/test_py_pure.mdbm" self.path_split = "/tmp/test_py_split.mdbm" self.path_prot = "/tmp/test_py_protect.mdbm" flags = mdbm.MDBM_O_RDWR flags = flags | mdbm.MDBM_O_CREAT flags = flags | mdbm.MDBM_LARGE_OBJECTS flags = flags | mdbm.MDBM_ANY_LOCKS flags = flags | mdbm.MDBM_O_TRUNC self.flags = flags self.mode = 0o644 # means 0644 self.dbm = mdbm.open(self.path, flags, self.mode, 0, 0) self.dbm.enable_stat_operations(mdbm.MDBM_STATS_BASIC | mdbm.MDBM_STATS_TIMED) self.dbm.set_stat_time_func(mdbm.MDBM_CLOCK_TSC) initDefaultData(self.dbm)
def mdbm_store(limit): path = "/tmp/test_py_benchmark_%s.mdbm" % limit flags = mdbm.MDBM_O_RDWR flags = flags | mdbm.MDBM_O_CREAT flags = flags | mdbm.MDBM_LARGE_OBJECTS flags = flags | mdbm.MDBM_ANY_LOCKS flags = flags | mdbm.MDBM_O_TRUNC mode = 0o644 # means 0644 dbm = mdbm.open(path, flags, mode, 0, 0) for i in range(0, limit): k = str(i) v = str(random.randrange(0, 65535)) rv = dbm.store(k, v, mdbm.MDBM_INSERT) if not rv: return False dbm.close() return True
def test_99_set_cachemode_get_cachemode(self): dbm_pure = mdbm.open(self.path_pure, self.flags, self.mode, 0, 0) rv = dbm_pure.set_cachemode(mdbm.MDBM_CACHEMODE_NONE) self.assertTrue(rv, "rv=%s" % rv) rv = dbm_pure.get_cachemode() self.assertEqual(rv, mdbm.MDBM_CACHEMODE_NONE) rv = dbm_pure.set_cachemode(mdbm.MDBM_CACHEMODE_LFU) self.assertTrue(rv, "rv=%s" % rv) rv = dbm_pure.get_cachemode() self.assertEqual(rv, mdbm.MDBM_CACHEMODE_LFU) rv = dbm_pure.set_cachemode(mdbm.MDBM_CACHEMODE_LRU) self.assertTrue(rv, "rv=%s" % rv) rv = dbm_pure.get_cachemode() self.assertEqual(rv, mdbm.MDBM_CACHEMODE_LRU) rv = dbm_pure.set_cachemode(mdbm.MDBM_CACHEMODE_GDSF) self.assertTrue(rv, "rv=%s" % rv) rv = dbm_pure.get_cachemode() self.assertEqual(rv, mdbm.MDBM_CACHEMODE_GDSF)
def test_99_pre_split(self): dbm2 = mdbm.open(self.path_split, self.flags, self.mode) rv = dbm2.pre_split(512) self.assertTrue(rv, "rv=%s" % rv)
def test_01_open(self): flags = mdbm.MDBM_O_RDONLY dbm = mdbm.open(self.path, flags, self.mode, 0, 0) self.assertTrue(dbm)
#!/usr/bin/env python # encoding: utf-8 import mdbm import random print("[*] Deleting records in-place") path = "/tmp/test1.mdbm" flags = mdbm.MDBM_O_RDWR mode = 0o644 # means 0644 dbm = mdbm.open(path, flags, mode) for i in range(0, 10): k = str(random.randrange(0, 65534)) rv = dbm.delete(k) if not rv: print("[-] failed to delete an record, key=%s" % k) v = dbm.fetch(k) if v: print("[-] failed to delete an record, key=%s, val=%s" % (k, v)) break print("[*] count of records : %d" % dbm.count_records()) dbm.close() print("done")