]> git.proxmox.com Git - ceph.git/blame - ceph/qa/tasks/cephfs/test_openfiletable.py
import 15.2.4
[ceph.git] / ceph / qa / tasks / cephfs / test_openfiletable.py
CommitLineData
92f5a8d4 1import time
9f95a23c 2import logging
e306af50 3from tasks.cephfs.cephfs_test_case import CephFSTestCase
92f5a8d4
TL
4from teuthology.exceptions import CommandFailedError
5from tasks.cephfs.cephfs_test_case import CephFSTestCase, for_teuthology
6
9f95a23c
TL
7log = logging.getLogger(__name__)
8
92f5a8d4
TL
9class OpenFileTable(CephFSTestCase):
10 CLIENTS_REQUIRED = 1
11 MDSS_REQUIRED = 1
12
9f95a23c
TL
13 def _check_oft_counter(self, name, count):
14 perf_dump = self.fs.mds_asok(['perf', 'dump'])
15 if perf_dump['oft'][name] == count:
16 return True
17 return False
18
92f5a8d4
TL
19 def test_max_items_per_obj(self):
20 """
21 The maximum number of openfiles omap objects keys are now equal to
22 osd_deep_scrub_large_omap_object_key_threshold option.
23 """
24 self.set_conf("mds", "osd_deep_scrub_large_omap_object_key_threshold", "5")
25
26 self.fs.mds_restart()
27 self.fs.wait_for_daemons()
28
29 # Write some bytes to a file
30 size_mb = 1
31
32 # Hold the file open
33 file_count = 8
e306af50 34 for i in range(0, file_count):
92f5a8d4
TL
35 filename = "open_file{}".format(i)
36 p = self.mount_a.open_background(filename)
37 self.mount_a.write_n_mb(filename, size_mb)
38
39 time.sleep(10)
40
41 """
42 With osd_deep_scrub_large_omap_object_key_threshold value as 5 and
43 opening 8 files we should have a new rados object with name
44 mds0_openfiles.1 to hold the extra keys.
45 """
46
47 stat_out = self.fs.rados(["stat", "mds0_openfiles.1"])
48
49 # Now close the file
50 self.mount_a.kill_background(p)
9f95a23c
TL
51
52 def test_perf_counters(self):
53 """
54 Opening a file should increment omap_total_updates by 1.
55 """
56
57 self.set_conf("mds", "osd_deep_scrub_large_omap_object_key_threshold", "1")
58 self.fs.mds_restart()
59 self.fs.wait_for_daemons()
60
61 perf_dump = self.fs.mds_asok(['perf', 'dump'])
62 omap_total_updates_0 = perf_dump['oft']['omap_total_updates']
63 log.info("omap_total_updates_0:{}".format(omap_total_updates_0))
64
65 # Open the file
66 p = self.mount_a.open_background("omap_counter_test_file")
67 self.wait_until_true(lambda: self._check_oft_counter('omap_total_updates', 2), timeout=30)
68
69 perf_dump = self.fs.mds_asok(['perf', 'dump'])
70 omap_total_updates_1 = perf_dump['oft']['omap_total_updates']
71 log.info("omap_total_updates_1:{}".format(omap_total_updates_1))
72
73 self.assertTrue((omap_total_updates_1 - omap_total_updates_0) == 2)
74
75 # Now close the file
76 self.mount_a.kill_background(p)
77 # Ensure that the file does not exist any more
78 self.wait_until_true(lambda: self._check_oft_counter('omap_total_removes', 1), timeout=30)
79 self.wait_until_true(lambda: self._check_oft_counter('omap_total_kv_pairs', 1), timeout=30)
80
81 perf_dump = self.fs.mds_asok(['perf', 'dump'])
82 omap_total_removes = perf_dump['oft']['omap_total_removes']
83 omap_total_kv_pairs = perf_dump['oft']['omap_total_kv_pairs']
84 log.info("omap_total_removes:{}".format(omap_total_removes))
85 log.info("omap_total_kv_pairs:{}".format(omap_total_kv_pairs))
86 self.assertTrue(omap_total_removes == 1)
87 self.assertTrue(omap_total_kv_pairs == 1)