ret[status] += 1
return ret
- def pg_scrubbing(self, pool, pgnum):
- """
- pg scrubbing wrapper
- """
- pgstr = self.get_pgid(pool, pgnum)
- stats = self.get_single_pg_stats(pgstr)
- return 'scrub' in stats['state']
-
- def pg_repairing(self, pool, pgnum):
- """
- pg repairing wrapper
- """
- pgstr = self.get_pgid(pool, pgnum)
- stats = self.get_single_pg_stats(pgstr)
- return 'repair' in stats['state']
-
- def pg_inconsistent(self, pool, pgnum):
- """
- pg inconsistent wrapper
- """
- pgstr = self.get_pgid(pool, pgnum)
- stats = self.get_single_pg_stats(pgstr)
- return 'inconsistent' in stats['state']
-
@wait_for_pg_stats
def with_pg_state(self, pool, pgnum, check):
pgstr = self.get_pgid(pool, pgnum)
log.info("scrubbing")
manager.do_pg_scrub(pool, 0, scrub_type)
- assert manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' in s)
# repair
log.info("repairing")
manager.do_pg_scrub(pool, 0, scrub_type)
# verify consistent
- assert not manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' not in s)
log.info("done")
log.info("scrubbing")
manager.do_pg_scrub(pool, 0, 'deep-scrub')
- assert manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' in s)
# Regression test for bug #4778, should still
# be inconsistent after scrub
manager.do_pg_scrub(pool, 0, 'scrub')
- assert manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' in s)
# Additional corruptions including 2 types for file1
log.info("corrupting more objects")
log.info("scrubbing")
manager.do_pg_scrub(pool, 0, 'deep-scrub')
- assert manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' in s)
# repair
log.info("repairing")
time.sleep(10)
# verify consistent
- assert not manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' not in s)
# In the future repair might determine state of
# inconsistency itself, verify with a deep-scrub
manager.do_pg_scrub(pool, 0, 'deep-scrub')
# verify consistent
- assert not manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' not in s)
log.info("done")
log.info("scrubbing")
manager.do_pg_scrub(pool, 0, scrub_type)
- assert manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' in s)
# repair
log.info("repairing")
manager.do_pg_scrub(pool, 0, scrub_type)
# verify consistent
- assert not manager.pg_inconsistent(pool, 0)
+ manager.with_pg_state(pool, 0, lambda s: 'inconsistent' not in s)
log.info("done")