]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: add test for importer's unexpected client eviction after an export subtree task...
authorZhansong Gao <zhsgao@hotmail.com>
Mon, 3 Jul 2023 08:42:34 +0000 (16:42 +0800)
committerZhansong Gao <zhsgao@hotmail.com>
Wed, 13 Nov 2024 09:39:16 +0000 (17:39 +0800)
Signed-off-by: Zhansong Gao <zhsgao@hotmail.com>
qa/tasks/cephfs/filesystem.py
qa/tasks/cephfs/test_exports.py

index 2b7fd2ee569455dac8c29af0352aa685945006bc..3846ef23f9719e0bece05f7754726cb11e0bed1a 100644 (file)
@@ -649,6 +649,8 @@ class FilesystemBase(MDSClusterBase):
     def set_session_timeout(self, timeout):
         self.set_var("session_timeout", "%d" % timeout)
 
+    def set_session_autoclose(self, autoclose_time):
+        self.set_var("session_autoclose", "%d" % autoclose_time)
     def set_allow_standby_replay(self, yes):
         self.set_var("allow_standby_replay", yes)
 
index 49a67a8be188c234cddfe52900a67639870a65d2..346f139874b3898913eb1755a39025da0adbfb14 100644 (file)
@@ -789,4 +789,26 @@ class TestKillExports(CephFSTestCase):
                 self.wait_until_evicted(client_id, importer_rank)
 
             # for multiple tests
-            self.mount_a.remount()
\ No newline at end of file
+            self.mount_a.remount()
+
+    def test_client_eviction(self):
+        # modify the timeout so that we don't have to wait too long
+        timeout = 30
+        self.fs.set_session_timeout(timeout)
+        self.fs.set_session_autoclose(timeout + 5)
+
+        kill_export_at = [9, 10]
+
+        exporter_rank = 0
+        importer_rank = 1
+
+        for kill in kill_export_at:
+            log.info(f"kill_export_at: {kill}")
+            self._run_kill_export(kill, exporter_rank, importer_rank)
+
+            client_id = self.mount_a.get_global_id()
+            self.wait_until_evicted(client_id, importer_rank, timeout + 10)
+            time.sleep(1)
+
+            # failed if buggy
+            self.mount_a.ls()