本文整理汇总了Python中s3ql.database.Connection.has_val方法的典型用法代码示例。如果您正苦于以下问题:Python Connection.has_val方法的具体用法?Python Connection.has_val怎么用?Python Connection.has_val使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类s3ql.database.Connection
的用法示例。
在下文中一共展示了Connection.has_val方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: cache_tests
# 需要导入模块: from s3ql.database import Connection [as 别名]
# 或者: from s3ql.database.Connection import has_val [as 别名]
class cache_tests(unittest.TestCase):
def setUp(self):
# Destructors are not guaranteed to run, and we can't unlink
# the file immediately because apsw refers to it by name.
# Therefore, we unlink the file manually in tearDown()
self.dbfile = tempfile.NamedTemporaryFile(delete=False)
self.db = Connection(self.dbfile.name)
create_tables(self.db)
init_tables(self.db)
self.cache = inode_cache.InodeCache(self.db, 0)
def tearDown(self):
self.cache.destroy()
os.unlink(self.dbfile.name)
def test_create(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
for key in attrs.keys():
self.assertEqual(attrs[key], getattr(inode, key))
self.assertTrue(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
def test_del(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
del self.cache[inode.id]
self.assertFalse(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
self.assertRaises(KeyError, self.cache.__delitem__, inode.id)
def test_get(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
for (key, val) in attrs.iteritems():
self.assertEqual(getattr(inode, key), val)
# Create another inode
self.cache.create_inode(**attrs)
self.db.execute('DELETE FROM inodes WHERE id=?', (inode.id,))
# Entry should still be in cache
self.assertEqual(inode, self.cache[inode.id])
# Now it should be out of the cache
for _ in xrange(inode_cache.CACHE_SIZE + 1):
self.cache.create_inode(**attrs)
self.assertRaises(KeyError, self.cache.__getitem__, inode.id)
示例2: fs_api_tests
# 需要导入模块: from s3ql.database import Connection [as 别名]
# 或者: from s3ql.database.Connection import has_val [as 别名]
#.........这里部分代码省略.........
fh = self.server.opendir(ROOT_INODE)
self.assertListEqual(sorted(names + [b'lost+found']) ,
sorted(x[0] for x in self.server.readdir(fh, 0)))
self.server.releasedir(fh)
# Read in parts
fh = self.server.opendir(ROOT_INODE)
entries = list()
try:
next_ = 0
while True:
gen = self.server.readdir(fh, next_)
for _ in range(3):
(name, _, next_) = next(gen)
entries.append(name)
except StopIteration:
pass
self.assertListEqual(sorted(names + [b'lost+found']) ,
sorted(entries))
self.server.releasedir(fh)
self.fsck()
def test_forget(self):
name = self.newname()
# Test that entries are deleted when they're no longer referenced
(fh, inode) = self.server.create(ROOT_INODE, name,
self.file_mode(), os.O_RDWR, Ctx())
self.server.write(fh, 0, b'foobar')
self.server.unlink(ROOT_INODE, name)
self.assertFalse(self.db.has_val('SELECT 1 FROM contents JOIN names ON names.id = name_id '
'WHERE name=? AND parent_inode = ?', (name, ROOT_INODE)))
self.assertTrue(self.server.getattr(inode.id).id)
self.server.release(fh)
self.server.forget([(inode.id, 1)])
self.assertFalse(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
self.fsck()
def test_removexattr(self):
(fh, inode) = self.server.create(ROOT_INODE, self.newname(),
self.file_mode(), os.O_RDWR, Ctx())
self.server.release(fh)
self.assertRaises(FUSEError, self.server.removexattr, inode.id, b'some name')
self.server.setxattr(inode.id, b'key1', b'blub')
self.server.removexattr(inode.id, b'key1')
self.assertListEqual([], self.server.listxattr(inode.id))
self.server.forget([(inode.id, 1)])
self.fsck()
def test_rename(self):
oldname = self.newname()
newname = self.newname()
inode = self.server.mkdir(ROOT_INODE, oldname, self.dir_mode(), Ctx())
inode_p_new = self.server.mkdir(ROOT_INODE, self.newname(), self.dir_mode(), Ctx())
inode_p_new_before = self.server.getattr(inode_p_new.id).copy()
inode_p_old_before = self.server.getattr(ROOT_INODE).copy()
safe_sleep(CLOCK_GRANULARITY)
示例3: fsck_tests
# 需要导入模块: from s3ql.database import Connection [as 别名]
# 或者: from s3ql.database.Connection import has_val [as 别名]
#.........这里部分代码省略.........
"VALUES (?,?,?,?,?,?,?,?)",
(stat.S_IFREG | stat.S_IRUSR | stat.S_IWUSR,
0, 0, time.time(), time.time(), time.time(), 1, 8))
self._link(b'test-entry', id_)
# Assume that due to a crash we did not write the hash for the block
self.backend['s3ql_data_4364'] = b'Testdata'
self.db.execute('INSERT INTO objects (id, refcount, size) VALUES(?, ?, ?)',
(4364, 1, 8))
block_id = self.db.execute('INSERT INTO blocks (obj_id, refcount, size) VALUES(?, ?, ?)',
(4364, 1, 8))
self.db.execute('INSERT INTO inode_blocks (inode, blockno, block_id) VALUES(?, ?, ?)',
(id_, 0, block_id))
# Should pick up wrong hash and delete objects
self.fsck.found_errors = False
self.fsck.check_blocks_checksum()
assert self.fsck.found_errors
self.fsck.found_errors = False
self.fsck.check_blocks_checksum()
assert not self.fsck.found_errors
# Should save files in lost+found
self.fsck.found_errors = False
self.fsck.check()
assert self.fsck.found_errors
# Now everything should be good
self.fsck.found_errors = False
self.fsck.check()
assert not self.fsck.found_errors
assert not self.db.has_val('SELECT block_id FROM inode_blocks WHERE inode=?',
(id_,))
inode_p = self.db.get_val('SELECT parent_inode FROM contents_v WHERE inode=?', (id_,))
lof_id = self.db.get_val("SELECT inode FROM contents_v WHERE name=? AND parent_inode=?",
(b"lost+found", ROOT_INODE))
assert inode_p == lof_id
def test_blocks_obj_id(self):
block_id = self.db.rowid('INSERT INTO blocks (refcount, obj_id, size) VALUES(?,?,?)',
(1, 48, 128))
id_ = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount,size) "
"VALUES (?,?,?,?,?,?,?,?)",
(stat.S_IFREG | stat.S_IRUSR | stat.S_IWUSR,
0, 0, time.time(), time.time(), time.time(), 1, 128))
self.db.execute('INSERT INTO inode_blocks (inode, blockno, block_id) VALUES(?,?,?)',
(id_, 0, block_id))
self._link(b'test-entry', id_)
self.assert_fsck(self.fsck.check_blocks_obj_id)
def test_missing_obj(self):
obj_id = self.db.rowid('INSERT INTO objects (refcount, size) VALUES(1, 32)')
block_id = self.db.rowid('INSERT INTO blocks (refcount, obj_id, size) VALUES(?,?,?)',
(1, obj_id, 128))
id_ = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount,size) "
"VALUES (?,?,?,?,?,?,?,?)",
(stat.S_IFREG | stat.S_IRUSR | stat.S_IWUSR,
0, 0, time.time(), time.time(), time.time(), 1, 128))
self.db.execute('INSERT INTO inode_blocks (inode, blockno, block_id) VALUES(?,?,?)',
示例4: fs_api_tests
# 需要导入模块: from s3ql.database import Connection [as 别名]
# 或者: from s3ql.database.Connection import has_val [as 别名]
#.........这里部分代码省略.........
fh = self.server.opendir(ROOT_INODE)
self.assertListEqual(sorted(names + ['lost+found']) ,
sorted(x[0] for x in self.server.readdir(fh, 0)))
self.server.releasedir(fh)
# Read in parts
fh = self.server.opendir(ROOT_INODE)
entries = list()
try:
next_ = 0
while True:
gen = self.server.readdir(fh, next_)
for _ in range(3):
(name, _, next_) = next(gen)
entries.append(name)
except StopIteration:
pass
self.assertListEqual(sorted(names + ['lost+found']) ,
sorted(entries))
self.server.releasedir(fh)
self.fsck()
def test_release(self):
name = self.newname()
# Test that entries are deleted when they're no longer referenced
(fh, inode) = self.server.create(ROOT_INODE, name,
self.file_mode(), Ctx())
self.server.write(fh, 0, 'foobar')
self.server.unlink(ROOT_INODE, name)
self.assertFalse(self.db.has_val('SELECT 1 FROM contents JOIN names ON names.id = name_id '
'WHERE name=? AND parent_inode = ?', (name, ROOT_INODE)))
self.assertTrue(self.server.getattr(inode.id).id)
self.server.release(fh)
self.assertFalse(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
self.fsck()
def test_removexattr(self):
(fh, inode) = self.server.create(ROOT_INODE, self.newname(),
self.file_mode(), Ctx())
self.server.release(fh)
self.assertRaises(FUSEError, self.server.removexattr, inode.id, 'some name')
self.server.setxattr(inode.id, 'key1', 'blub')
self.server.removexattr(inode.id, 'key1')
self.assertListEqual([], self.server.listxattr(inode.id))
self.fsck()
def test_rename(self):
oldname = self.newname()
newname = self.newname()
inode = self.server.mkdir(ROOT_INODE, oldname, self.dir_mode(), Ctx())
inode_p_new = self.server.mkdir(ROOT_INODE, self.newname(), self.dir_mode(), Ctx())
inode_p_new_before = self.server.getattr(inode_p_new.id).copy()
inode_p_old_before = self.server.getattr(ROOT_INODE).copy()
time.sleep(CLOCK_GRANULARITY)
self.server.rename(ROOT_INODE, oldname, inode_p_new.id, newname)
示例5: cache_tests
# 需要导入模块: from s3ql.database import Connection [as 别名]
# 或者: from s3ql.database.Connection import has_val [as 别名]
class cache_tests(TestCase):
def setUp(self):
self.dbfile = tempfile.NamedTemporaryFile()
self.db = Connection(self.dbfile.name)
create_tables(self.db)
init_tables(self.db)
self.cache = inode_cache.InodeCache(self.db)
def tearDown(self):
self.cache.destroy()
def test_create(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
for key in attrs.keys():
self.assertEqual(attrs[key], getattr(inode, key))
self.assertTrue(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
def test_del(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
del self.cache[inode.id]
self.assertFalse(self.db.has_val('SELECT 1 FROM inodes WHERE id=?', (inode.id,)))
self.assertRaises(KeyError, self.cache.__delitem__, inode.id)
def test_get(self):
attrs = {'mode': 784,
'refcount': 3,
'uid': 7,
'gid': 2,
'size': 34674,
'rdev': 11,
'atime': time.time(),
'ctime': time.time(),
'mtime': time.time() }
inode = self.cache.create_inode(**attrs)
for (key, val) in attrs.iteritems():
self.assertEqual(getattr(inode, key), val)
# Create another inode
self.cache.create_inode(**attrs)
self.db.execute('DELETE FROM inodes WHERE id=?', (inode.id,))
# Entry should still be in cache
self.assertEqual(inode, self.cache[inode.id])
# Now it should be out of the cache
for _ in xrange(inode_cache.CACHE_SIZE + 1):
self.cache.create_inode(**attrs)
self.assertRaises(KeyError, self.cache.__getitem__, inode.id)