"""Test hook for verifying orphan documents are eventually deleted in a sharded cluster.""" import os.path from buildscripts.resmokelib.testing.fixtures import shardedcluster from buildscripts.resmokelib.testing.hooks import jsfile class CheckOrphansDeleted(jsfile.DataConsistencyHook): """Check if the range deleter failed to delete any orphan documents.""" IS_BACKGROUND = False def __init__(self, hook_logger, fixture, shell_options=None): """Initialize CheckOrphansDeleted.""" if not isinstance(fixture, shardedcluster.ShardedClusterFixture): raise ValueError(f"'fixture' must be an instance of ShardedClusterFixture, but got" f" {fixture.__class__.__name__}") description = "Check orphan documents are eventually deleted" js_filename = os.path.join("jstests", "hooks", "run_check_orphans_are_deleted.js") super().__init__(hook_logger, fixture, js_filename, description, shell_options=shell_options) def after_test(self, test, test_report): """Run the run_check_orphans_are_deleted.js hook.""" # We temporarily disable the balancer so more work isn't generated for the range deleter # while the hook is running. if self.fixture.enable_balancer: self.fixture.stop_balancer() super().after_test(test, test_report) if self.fixture.enable_balancer: self.fixture.start_balancer()