def test_autocommit_after_other_command(self): self.db.set('key1', {'name': 'Alice'}) self.db.set('key2', {'name': 'Alice'}) self.db.set('key3', {'name': 'Alice'}) # Should be committed self.db.delete('key3') db = MeuhDb(self.filename) # reload self.assertTrue(db.exists('key3'))
def test_create_index_change_to_lazy_commit(self): self.db.create_index('good') self.db.commit() # reload db = MeuhDb(self.filename) result = db.filter(good=True) self.assertTrue(db._used_index) self.assertTrue('one' in result) self.assertTrue('two' in result) self.assertFalse('three' in result)
def test_create_index(self): self.db.set('1', {'name': 'Alice'}) self.db.set('2', {'name': 'Bob'}) self.db.create_index('name') db = MeuhDb(self.filename) # reload self.assertTrue(db.exists('1')) self.assertTrue(db.exists('2')) self.assertTrue('name' in db.indexes) index = db.indexes['name'] self.assertEquals(index['Alice'], set(['1'])) self.assertEquals(index['Bob'], set(['2']))
def test_autocommit_after(self): self.db.set('key', {'name': 'Alice'}) db = MeuhDb(self.filename) # reload self.assertFalse(db.exists('key')) self.db.set('key', {'name': 'Alice 2'}) db = MeuhDb(self.filename) # reload self.assertFalse(db.exists('key')) self.db.set('key', {'name': 'Alice 3'}) db = MeuhDb(self.filename) # reload self.assertTrue(db.exists('key'))
def test_ensure_set(self): self.db.create_index('name') self.db.set('1', {'name': 'Alice'}) self.db.set('2', {'name': 'Alice'}) db = MeuhDb(self.filename) # reload self.assertTrue('name' in db.indexes) index = db.indexes['name'] self.assertEquals(index['Alice'], set(['1', '2']))
def test_commit(self): self.db.set('key', {'hello': 'world'}) db = MeuhDb(self.filename) # reload self.assertFalse(db.exists("key")) self.db.commit() db = MeuhDb(self.filename) # reload self.assertTrue(db.exists("key")) self.assertEquals(db.get('key'), {'hello': 'world'})
def test_update_name_index(self): self.db.set('1', {'name': 'Alice'}) self.db.set('2', {'flag': True}) self.db.create_index('name') self.db.update('2', {'name': 'Bob'}) db = MeuhDb(self.filename) # reload self.assertTrue('name' in db.indexes) index = db.indexes['name'] self.assertEquals(index['Alice'], set(['1'])) self.assertEquals(index['Bob'], set(['2']))
def dump_load(backend): fd, filename = mkstemp() db = MeuhDb(filename, backend=backend) for x in range(200000): db.set("%d" % x, {'score': random.randrange(1, 100)}) t0 = time.clock() db.commit() t1 = time.clock() t2 = time.clock() db = MeuhDb(filename, backend=backend) t3 = time.clock() unlink(filename) return t3 - t2, t1 - t0
def test_update(self): self.db.set('key', {'name': "me"}) self.assertEquals(self.db.get('key'), {'name': "me"}) self.db.update('key', {'thing': 'stuff'}) db = MeuhDb(self.filename) # reload self.assertEquals(db.get('key'), {'name': "me", 'thing': 'stuff'}) # updating an non-existing key means creating it self.db.update('other', {'hello': 'world'}) db = MeuhDb(self.filename) # reload self.assertEquals(db.get('other'), {'hello': 'world'})
def test_indexes(self): self.db.create_index('name') self.db.set('key', {'name': 'Alice'}) self.assertTrue('name' in self.db.indexes) index = self.db.indexes['name'] self.assertTrue('Alice' in index) self.assertEquals(index['Alice'], set(['key'])) self.db.commit() loaded_data = json.load(open(self.filename)) self.assertNotIn('indexes', loaded_data) self.assertIn('index_defs', loaded_data) self.assertIn('name', loaded_data['index_defs']) self.assertEquals(loaded_data['index_defs']['name'], {'type': 'lazy'}) # load data out of the lazy file db = MeuhDb(self.filename) self.assertEquals(db.data, {'key': {'name': 'Alice'}}) self.assertEquals(db.indexes, {'name': {'Alice': set(['key'])}})
def test_missing_backend(self): db = MeuhDb(backend='missing-json') self.assertEquals(db._meta.backend, 'json') self.assertEquals(self.db._meta.serializer, json.dumps) self.assertEquals(self.db._meta.deserializer, json.loads)
def test_insert(self): key = self.db.insert({'hello': 'world'}) db = MeuhDb(self.filename) # reload self.assertEquals(db.get(key), {'hello': 'world'})
def test_delete(self): self.db.set('key', {'hello': 'world'}) self.db.delete('key') db = MeuhDb(self.filename) # reload self.assertFalse(db.exists('key'))
def setUp(self): self.fd, self.filename = mkstemp() self.db = MeuhDb(self.filename, **self.options)
def test_delete_index(self): self.db.create_index('name') self.db.remove_index('name') db = MeuhDb(self.filename) # reload self.assertFalse('name' in db.indexes)
def setUp(self): self.db = MeuhDb() # in-memory DB
def test_set(self): self.db.set('key', {'hello': 'world'}) db = MeuhDb(self.filename) # reload self.assertEquals(db.get('key'), {'hello': 'world'})