From: Yan, Zheng Date: Mon, 29 Sep 2014 09:13:20 +0000 (+0800) Subject: tasks/mds_client_recovery: client trim its cache on reconnect X-Git-Tag: v0.94.10~27^2^2~288^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff03b46509fe34f517f65f125058f60f2d64f608;p=ceph.git tasks/mds_client_recovery: client trim its cache on reconnect make sure CephFS client trim its cache before reconnect to the MDS. Signed-off-by: Yan, Zheng --- diff --git a/tasks/mds_client_recovery.py b/tasks/mds_client_recovery.py index 6f65575ffdd4..fcbfc53a6977 100644 --- a/tasks/mds_client_recovery.py +++ b/tasks/mds_client_recovery.py @@ -84,6 +84,10 @@ class TestClientRecovery(CephFSTestCase): self.mount_a.create_destroy() self.mount_b.create_destroy() + def _session_num_caps(self, client_id): + ls_data = self.fs.mds_asok(['session', 'ls']) + return int(self._session_by_id(ls_data).get(client_id, {'num_caps': None})['num_caps']) + def test_reconnect_timeout(self): # Reconnect timeout # ================= @@ -252,6 +256,34 @@ class TestClientRecovery(CephFSTestCase): self.mount_a.mount() self.mount_a.wait_until_mounted() + def test_trim_caps(self): + # Trim capability when reconnecting MDS + # =================================== + + count = 500 + # Create lots of files + for i in range(count): + self.mount_a.run_shell(["sudo", "touch", "f{0}".format(i)]) + + # Populate mount_b's cache + self.mount_b.run_shell(["sudo", "ls"]) + + client_id = self.mount_b.get_global_id() + num_caps = self._session_num_caps(client_id) + self.assertGreaterEqual(num_caps, count) + + # Restart MDS. client should trim its cache when reconnecting to the MDS + self.fs.mds_stop() + self.fs.mds_fail() + self.fs.mds_restart() + self.fs.wait_for_state('up:active', timeout=MDS_RESTART_GRACE) + + num_caps = self._session_num_caps(client_id) + self.assertLess(num_caps, count, + "should have less than {0} capabilities, have {1}".format( + count, num_caps + )) + def test_network_death(self): """ Simulate software freeze or temporary network failure.