Skip to content

Commit

Permalink
test: add test for mds drop cache command
Browse files Browse the repository at this point in the history
Fixes: http://tracker.ceph.com/issues/23362
Signed-off-by: Venky Shankar <vshankar@redhat.com>
  • Loading branch information
vshankar committed Sep 28, 2018
1 parent da70dde commit 43d1b8e
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions qa/tasks/cephfs/test_misc.py
Expand Up @@ -207,3 +207,74 @@ def test_dump_inode(self):
info = self.fs.mds_asok(['dump', 'inode', '1'])
assert(info['path'] == "/")

def _run_drop_cache_cmd(self, timeout, use_tell):
drop_res = None
if use_tell:
mds_id = self.fs.get_lone_mds_id()
drop_res = json.loads(
self.fs.mon_manager.raw_cluster_cmd("tell", "mds.{0}".format(mds_id),
"cache", "drop", str(timeout)))
else:
drop_res = self.fs.mds_asok(["cache", "drop", str(timeout)])
return drop_res

def _drop_cache_command(self, timeout, use_tell=True):
self.mount_b.umount_wait()
ls_data = self.fs.mds_asok(['session', 'ls'])
self.assert_session_count(1, ls_data)

# create some files
self.mount_a.create_n_files("dc-dir/dc-file", 1000)
# drop cache
drop_res = self._run_drop_cache_cmd(timeout, use_tell)

self.assertTrue(drop_res['client_recall']['return_code'] == 0)
self.assertTrue(drop_res['flush_journal']['return_code'] == 0)

def _drop_cache_command_timeout(self, timeout, use_tell=True):
self.mount_b.umount_wait()
ls_data = self.fs.mds_asok(['session', 'ls'])
self.assert_session_count(1, ls_data)

# create some files
self.mount_a.create_n_files("dc-dir/dc-file-t", 1000)

# simulate client death and try drop cache
self.mount_a.kill()
drop_res = self._run_drop_cache_cmd(timeout, use_tell)

self.assertTrue(drop_res['client_recall']['return_code'] == -errno.ETIMEDOUT)
self.assertTrue(drop_res['flush_journal']['return_code'] == 0)

self.mount_a.kill_cleanup()
self.mount_a.mount()
self.mount_a.wait_until_mounted()

def test_drop_cache_command_asok(self):
"""
Basic test for checking drop cache command using admin socket.
Note that the cache size post trimming is not checked here.
"""
self._drop_cache_command(10, use_tell=False)

def test_drop_cache_command_tell(self):
"""
Basic test for checking drop cache command using tell interface.
Note that the cache size post trimming is not checked here.
"""
self._drop_cache_command(10)

def test_drop_cache_command_timeout_asok(self):
"""
Check drop cache command with non-responding client using admin
socket. Note that the cache size post trimming is not checked here.
"""
self._drop_cache_command_timeout(5, use_tell=False)

def test_drop_cache_command_timeout_tell(self):
"""
Check drop cache command with non-responding client using tell
interface. Note that the cache size post trimming is not checked
here.
"""
self._drop_cache_command_timeout(5)

0 comments on commit 43d1b8e

Please sign in to comment.