From 2b39fe595126faa10bab42f2fec00c04bbde9644 Mon Sep 17 00:00:00 2001 From: John Spray Date: Thu, 19 Feb 2015 09:12:38 +0000 Subject: [PATCH] tasks/mds_flush: be more careful monitoring stats Were previously taking the baseline from just after the client did a delete, which was racy: should have taken it from before, to get a steady state. Also update the perf dump calls to take advantage of the new filtering syntax. Signed-off-by: John Spray --- tasks/mds_flush.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tasks/mds_flush.py b/tasks/mds_flush.py index 458de83aefa7a..2532952b97b6c 100644 --- a/tasks/mds_flush.py +++ b/tasks/mds_flush.py @@ -82,26 +82,28 @@ class TestFlush(CephFSTestCase): ).strip()) # Now for deletion! + # We will count the RADOS deletions and MDS file purges, to verify that + # the expected behaviour is happening as a result of the purge + initial_dels = self.fs.mds_asok(['perf', 'dump', 'objecter'])['objecter']['osdop_delete'] + initial_purges = self.fs.mds_asok(['perf', 'dump', 'mds_cache'])['mds_cache']['strays_purged'] + + # Use a client to delete a file self.mount_a.mount() self.mount_a.wait_until_mounted() self.mount_a.run_shell(["rm", "-rf", "mydir"]) - # We will count the RADOS deletions and MDS file purges, to verify that - # the expected behaviour is happening as a result of the purge - initial_dels = self.fs.mds_asok(['perf', 'dump'])['objecter']['osdop_delete'] - initial_purges = self.fs.mds_asok(['perf', 'dump'])['mds_cache']['strays_purged'] - + # Flush the journal so that the directory inode can be purged flush_data = self.fs.mds_asok(["flush", "journal"]) self.assertEqual(flush_data['return_code'], 0) # We expect to see a single file purge self.wait_until_true( - lambda: self.fs.mds_asok(['perf', 'dump'])['mds_cache']['strays_purged'] - initial_purges >= 1, + lambda: self.fs.mds_asok(['perf', 'dump', 'mds_cache'])['mds_cache']['strays_purged'] - initial_purges >= 2, 60) # We expect two deletions, one of the dirfrag and one of the backtrace self.wait_until_true( - lambda: self.fs.mds_asok(['perf', 'dump'])['objecter']['osdop_delete'] - initial_dels >= 2, + lambda: self.fs.mds_asok(['perf', 'dump', 'objecter'])['objecter']['osdop_delete'] - initial_dels >= 2, 60) # timeout is fairly long to allow for tick+rados latencies with self.assertRaises(ObjectNotFound): -- 2.39.5