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

us.abstracta.jmeter.javadsl.bridge.serialization.TestPlanStatsSerializer Maven / Gradle / Ivy

Go to download

Module which allows to build simple adapters for JMeter Java DSL in other languages

The newest version!
package us.abstracta.jmeter.javadsl.bridge.serialization;

import java.io.Writer;
import java.time.Duration;
import java.time.Instant;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.Yaml;
import us.abstracta.jmeter.javadsl.core.TestPlanStats;
import us.abstracta.jmeter.javadsl.core.stats.CountMetricSummary;
import us.abstracta.jmeter.javadsl.core.stats.StatsSummary;
import us.abstracta.jmeter.javadsl.core.stats.TimeMetricSummary;

public class TestPlanStatsSerializer {

  public void serializeToWriter(TestPlanStats stats, Writer writer) {
    DumperOptions opts = new DumperOptions();
    opts.setDefaultFlowStyle(FlowStyle.BLOCK);
    new Yaml(opts).dump(stats2Map(stats), writer);
  }

  private Map stats2Map(TestPlanStats stats) {
    Map ret = new HashMap<>();
    ret.put("duration", duration2String(stats.duration()));
    ret.put("overall", statsSummary2Map(stats.overall()));
    ret.put("labels", stats.labels().stream()
        .collect(
            Collectors.toMap(l -> l, l -> statsSummary2Map(stats.byLabel(l)), (u, v) -> u,
                LinkedHashMap::new)));
    return ret;
  }

  private String duration2String(Duration duration) {
    return duration.toString();
  }

  private Map statsSummary2Map(StatsSummary stats) {
    Map ret = new HashMap<>();
    ret.put("firstTime", instant2String(stats.firstTime()));
    ret.put("endTime", instant2String(stats.endTime()));
    ret.put("samples", countMetric2Map(stats.samples()));
    ret.put("errors", countMetric2Map(stats.errors()));
    ret.put("sampleTime", timeMetric2Map(stats.sampleTime()));
    ret.put("receivedBytes", countMetric2Map(stats.receivedBytes()));
    ret.put("sentBytes", countMetric2Map(stats.sentBytes()));
    return ret;
  }

  private String instant2String(Instant instant) {
    return instant.toString();
  }

  private Map countMetric2Map(CountMetricSummary metric) {
    Map ret = new HashMap<>();
    ret.put("total", metric.total());
    ret.put("perSecond", metric.perSecond());
    return ret;
  }

  private Map timeMetric2Map(TimeMetricSummary metric) {
    Map ret = new HashMap<>();
    ret.put("max", duration2String(metric.max()));
    ret.put("min", duration2String(metric.min()));
    ret.put("mean", duration2String(metric.mean()));
    ret.put("median", duration2String(metric.median()));
    ret.put("perc90", duration2String(metric.perc90()));
    ret.put("perc95", duration2String(metric.perc95()));
    ret.put("perc99", duration2String(metric.perc99()));
    return ret;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy