All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nohope.test.stress.util.MetricsAccumulator Maven / Gradle / Ivy

The newest version!
package org.nohope.test.stress.util;

import org.nohope.test.stress.result.metrics.StressMetrics;

import java.time.Duration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 */
public class MetricsAccumulator {
    private final List metrics = new ArrayList<>();
    private final ScheduledExecutorService scheduledThreadPoolExecutor = Executors.newSingleThreadScheduledExecutor();

    private final Duration period;

    public MetricsAccumulator(final Duration period) {
        this.period = period;
    }

    private void storeMetric() {
        metrics.add(StressMetrics.get());
    }

    public List getMetrics() {
        return Collections.unmodifiableList(metrics);
    }

    public void start() {
        scheduledThreadPoolExecutor.scheduleAtFixedRate(this::storeMetric, 0,
                period.toMillis(), TimeUnit.MILLISECONDS);
    }

    public void stop() {
        scheduledThreadPoolExecutor.shutdown();
        try {
            scheduledThreadPoolExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.HOURS);
        } catch (final InterruptedException ignored) {
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy