mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
provide completion metrics
This commit is contained in:
parent
56c687380e
commit
13660d7123
@ -16,11 +16,15 @@
|
||||
|
||||
package io.nosqlbench.engine.api.activityapi.core.progress;
|
||||
|
||||
import com.codahale.metrics.Gauge;
|
||||
import com.codahale.metrics.Timer;
|
||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
||||
import io.nosqlbench.api.config.NBLabeledElement;
|
||||
import io.nosqlbench.api.engine.metrics.ActivityMetrics;
|
||||
import io.nosqlbench.api.engine.util.Unit;
|
||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ActivityMetricProgressMeter implements ProgressMeterDisplay, CompletedMeter, RemainingMeter, ActiveMeter {
|
||||
|
||||
@ -28,12 +32,19 @@ public class ActivityMetricProgressMeter implements ProgressMeterDisplay, Comple
|
||||
private final Instant startInstant;
|
||||
private final Timer bindTimer;
|
||||
private final Timer cyclesTimer;
|
||||
private final Gauge<Double> pendingGauge;
|
||||
private final Gauge<Double> currentGauge;
|
||||
private final Gauge<Double> completeGauge;
|
||||
|
||||
public ActivityMetricProgressMeter(Activity activity) {
|
||||
this.activity = activity;
|
||||
this.startInstant = Instant.ofEpochMilli(activity.getStartedAtMillis());
|
||||
this.bindTimer = activity.getInstrumentation().getOrCreateBindTimer();
|
||||
this.cyclesTimer = activity.getInstrumentation().getOrCreateCyclesServiceTimer();
|
||||
|
||||
this.pendingGauge = ActivityMetrics.gauge(activity,"ops_pending",new AuxGauge(activity, this::getRemainingCount));
|
||||
this.currentGauge = ActivityMetrics.gauge(activity,"ops_active",new AuxGauge(activity, this::getActiveOps));
|
||||
this.completeGauge = ActivityMetrics.gauge(activity, "ops_complete", new AuxGauge(activity, this::getCompletedCount));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -82,4 +93,18 @@ public class ActivityMetricProgressMeter implements ProgressMeterDisplay, Comple
|
||||
public double getCompletedCount() {
|
||||
return cyclesTimer.getCount();
|
||||
}
|
||||
|
||||
private final static class AuxGauge implements Gauge<Double> {
|
||||
private final NBLabeledElement parent;
|
||||
private final Supplier<Double> source;
|
||||
|
||||
public AuxGauge(NBLabeledElement parent, Supplier<Double> source) {
|
||||
this.parent = parent;
|
||||
this.source =source;
|
||||
}
|
||||
@Override
|
||||
public Double getValue() {
|
||||
return source.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user