Ejemplo n.º 1
0
 def test_get_assert_in_callback(self):
     def callback (key):
         self.assertEqual(memoryview(key).tobytes(), "123".encode('utf-8'))
     key = "dict_test"
     val = "123"
     db = Database(self.engine, self.config)
     db[key] = val
     db.get(key, callback)
     db.stop()
Ejemplo n.º 2
0
 def test_puts_empty_values(self):
     db = Database(self.engine, self.config)
     db.put(r"empty", r"")
     db.put(r"single-space", r" ")
     db.put(r"two-tab", r"\t\t")
     self.assertEqual(db.get(r"empty"), r"")
     self.assertEqual(db.get(r"single-space"), r" ")
     self.assertEqual(db.get(r"two-tab"), r"\t\t")
     db.stop()
Ejemplo n.º 3
0
 def test_puts_overwriting_existing_value(self):
     db = Database(self.engine, self.config)
     db.put(r"key1", r"value1")
     self.assertEqual(db.get(r"key1"), r"value1")
     db.put(r"key1", r"value123")
     self.assertEqual(db.get(r"key1"), r"value123")
     db.put(r"key1", r"asdf")
     self.assertEqual(db.get(r"key1"), r"asdf")
     db.stop()
Ejemplo n.º 4
0
 def test_removes_key_and_value(self):
     db = Database(self.engine, self.config)
     db.put(r"key1", r"value1")
     self.assertTrue(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), r"value1")
     self.assertTrue(db.remove(r"key1"))
     self.assertFalse(db.remove(r"key1"))
     self.assertFalse(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), None)
     db.stop()
Ejemplo n.º 5
0
 def test_get_out_of_bound_access_in_callback(self):
     key = "dict_test"
     val = "123"
     db = Database(self.engine, self.config)
     db[key] = val
     with self.assertRaises(IndexError):
         db.get(key, lambda v: memoryview(v).tobytes()[4])
     with self.assertRaises(TypeError):
         db.get(key, lambda v: memoryview(v)[1])
     db.stop()
Ejemplo n.º 6
0
    def test_get_lambda_in_callback(self):
        key = "dict_test"
        val = "123"
        db = Database(self.engine, self.config)
        db[key] = val

        db.get(key, lambda v, k=key: self.assertEqual(memoryview(v).tobytes(),
                                             "123".encode('utf-8')))
        db.get(key, lambda v, k=key: self.assertEqual(k, "dict_test"))
        db.stop()
Ejemplo n.º 7
0
    def test_get_with_value_indexing(self):
        key = "dict_test"
        val = "123"
        db = Database(self.engine, self.config)
        db[key] = val

        db.get(key,
               lambda v, k=key: self.assertEqual(
                   (memoryview(v)[0:2]).tobytes(), "12".encode('utf-8')))
        db.stop()
Ejemplo n.º 8
0
 def test_puts_multiple_values(self):
     db = Database(self.engine, self.config)
     db.put(r"key1", r"value1")
     db.put(r"key2", r"value2")
     db.put(r"key3", r"value3")
     self.assertTrue(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), r"value1")
     self.assertTrue(db.exists(r"key2"))
     self.assertEqual(db.get(r"key2"), r"value2")
     self.assertTrue(db.exists(r"key3"))
     self.assertEqual(db.get(r"key3"), r"value3")
     db.stop()
Ejemplo n.º 9
0
 def test_puts_empty_key(self):
     db = Database(self.engine, self.config)
     db.put(r"", r"empty")
     db.put(r" ", r"single-space")
     db.put(r"\t\t", r"two-tab")
     self.assertTrue(db.exists(r""))
     self.assertEqual(db.get(r""), r"empty")
     self.assertTrue(db.exists(r" "))
     self.assertEqual(db.get(r" "), r"single-space")
     self.assertTrue(db.exists(r"\t\t"))
     self.assertEqual(db.get(r"\t\t"), r"two-tab")
     db.stop()
Ejemplo n.º 10
0
 def test_get_AttributeError_in_callback(self):
     def callback (key):
         self.assertEqual(key.NonexistentMethod(), "123".encode('utf-8'))
     key = "dict_test"
     val = "123"
     db = Database(self.engine, self.config)
     db[key] = val
     try:
         db.get(key, callback)
     except Exception as e:
         assert type(e).__name__ == "AttributeError"
     db.stop()
Ejemplo n.º 11
0
 def test_blackhole_engine(self):
     db = Database(r"blackhole", self.config)
     self.assertEqual(db.count_all(), 0)
     self.assertFalse(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), None)
     db.put(r"key1", r"value123")
     self.assertEqual(db.count_all(), 0)
     self.assertFalse(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), None)
     self.assertTrue(db.remove(r"key1"))
     self.assertFalse(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), None)
     db.stop()
Ejemplo n.º 12
0
 def test_call_del_inside_callback(self):
     def callback(val):
         del(val)
         # check if buffer protocol object was properly removed
         with self.assertRaises(UnboundLocalError):
             del(val)
     key = "dict_test"
     val = "123"
     db = Database(self.engine, self.config)
     db[key] = val
     db.get(key, callback)
     # check if key is accessable
     self.assertEqual(db[key], val)
     db.stop()
Ejemplo n.º 13
0
 def test_get_copy_to_class_member(self):
     class Callback:
         def __init__(self):
             self.result = None
         def __call__(self, key):
             self.result = memoryview(key)
     callback = Callback()
     db = Database(self.engine, self.config)
     key = "dict_test"
     val = "123"
     db[key] = val
     db.get(key, callback)
     self.assertEqual(callback.result.tobytes(), "123".encode('utf-8'))
     db.stop()
Ejemplo n.º 14
0
 def test_get_exception_in_callback(self):
     class LocalException(Exception):
         pass
     def callback(key):
         raise LocalException('TestException')
     db = Database(self.engine, self.config)
     key = "dict_test"
     val = "123"
     db[key] = val
     try:
         db.get(key, callback)
     except LocalException as e:
         db.stop()
         self.assertEqual(type(e).__name__ , "LocalException")
     db.stop()
Ejemplo n.º 15
0
 def test_puts_utf8_key(self):
     db = Database(self.engine, self.config)
     val = r"to remember, note, record"
     db.put(r"记", val)
     self.assertTrue(db.exists(r"记"))
     self.assertEqual(db.get(r"记"), val)
     db.stop()
Ejemplo n.º 16
0
 def test_puts_basic_values(self):
     db = Database(self.engine, self.config)
     self.assertFalse(db.exists(r"key1"))
     db.put(r"key1", r"value1")
     self.assertTrue(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), r"value1")
     db.stop()
Ejemplo n.º 17
0
    def test_get_copy_to_class_member(self):
        class Callback:
            def __init__(self):
                self.result = None

            def __call__(self, key):
                self.result = bytes(key)

        callback = Callback()
        db = Database(self.engine, self.config)
        key = "dict_test"
        val = "123"
        db[key] = val
        db.get(key, callback)
        db.remove(key)
        db[key] = "Some other string"
        self.assertEqual(callback.result.decode(), val)
        db.stop()
Ejemplo n.º 18
0
def test_engine(engine, value):
    global count, path, failures

    print("\nTesting " + engine + " engine for " + str(count) +
          " keys, value size is " + str(len(value)) + "...")
    if os.path.isfile(path):
        os.remove(path)

    db = Database(
        engine, '{"path": \"' + str(path) +
        '\", "size": 1073741824, "force_create": 1}')
    print("Put (sequential series)")
    t1 = time.time()
    for i in range(0, count):
        db.put(str(i), value)
    print("   in " + str(time.time() - t1) + " sec(s)")

    print("Get (sequential series)")
    failures = 0
    t1 = time.time()
    for i in range(0, count):
        if db.get(str(i)) == None:
            failures += 1
    print("   in " + str(time.time() - t1) + " sec(s), failures=" +
          str(failures))

    print("Exists (sequential series)")
    failures = 0
    t1 = time.time()
    for i in range(0, count):
        if not db.exists(str(i)):
            failures += 1
    print("   in " + str(time.time() - t1) + " sec(s), failures=" +
          str(failures))

    print("All (one pass)")
    failures = count
    t1 = time.time()
    db.get_keys(func)
    print("   in " + str(time.time() - t1) + " sec(s), failures=" +
          str(failures))

    print("Each (one pass)")
    failures = count
    t1 = time.time()
    db.get_all(func)
    print("   in " + str(time.time() - t1) + " sec(s), failures=" +
          str(failures))

    db.stop()
Ejemplo n.º 19
0
 def test_puts_binary_keys(self):
     db = Database(self.engine, self.config)
     db.put("A\0B\0\0C", r"value1")
     self.assertTrue(db.exists("A\0B\0\0C"))
     self.assertEqual(db.get("A\0B\0\0C"), r"value1")
     db.stop()
Ejemplo n.º 20
0
 def test_puts_binary_values(self):
     db = Database(self.engine, self.config)
     db.put(r"key1", "A\0B\0\0C")
     self.assertEqual(db.get(r"key1"), "A\0B\0\0C")
     db.stop()
Ejemplo n.º 21
0
 def test_puts_complex_value(self):
     db = Database(self.engine, self.config)
     val = r"one\ttwo or <p>three</p>\n {four}   and ^five"
     db.put(r"key1", val)
     self.assertEqual(db.get(r"key1"), val)
     db.stop()
Ejemplo n.º 22
0
 def test_gets_missing_key(self):
     db = Database(self.engine, self.config)
     self.assertFalse(db.exists(r"key1"))
     self.assertEqual(db.get(r"key1"), None)
     db.stop()