@Override
    public void run() {
        doMaintain(false);
    }
@Test
    public void success_metric() {
        TestJobMetrics jobMetrics = new TestJobMetrics();
        TestMaintainer maintainer = new TestMaintainer(null, jobControl, jobMetrics);

        maintainer.successOnNextRun(1.0).run();
        assertEquals(1, jobMetrics.successFactor, delta);
        maintainer.successOnNextRun(0.0).run();
        assertEquals(0, jobMetrics.successFactor, delta);
        maintainer.successOnNextRun(0.1).run();
        assertEquals(0.1, jobMetrics.successFactor, delta);

        // Maintainer throws
        maintainer.throwOnNextRun(new RuntimeException()).run();
        assertEquals(-1, jobMetrics.successFactor, delta);

        // Maintainer recovers
        maintainer.throwOnNextRun(null).run();
        maintainer.successOnNextRun(1.0).run();
        assertEquals(1, jobMetrics.successFactor, delta);

        // Lock exception is treated as a failure
        maintainer.throwOnNextRun(new UncheckedTimeoutException()).run();
        assertEquals(-1, jobMetrics.successFactor, delta);
    }