Hi, I have antoher problem, which is really painful and very urgent. If my code is correct then this must be a bug in Chauffuer. I would really appreciate it if you could take a look.
This code works only for the measurementEnded event. According to you the metrics in the result.xml should be overwritten if the RawFileWriter takes the postMeasurementPhase also into consideration. However for me it does not work. Do I have an error in my code or is it a bug in Chaufeur?
The listener ist only registerd to the client.
package org.spec.chauffeur.energyEfficiencyMetrics.Listeners;
@SuppressWarnings("unchecked")
public class EnergyEfficiencyMetricsResultListener extends RunListenerAdapter {
private static final MetricGroup GROUP_ROOT = MetricGroup.createRootGroup("energy_efficiency_metrics");
private static final MetricGroup GROUP_SCENARIO = GROUP_ROOT.createSubgroup("scenario");
private static final MetricGroup GROUP_SCENARIO_INFORMATION = GROUP_SCENARIO.createSubgroup("information");
private static final Metric<String>[] FIREWALL_SCENARIO_SCENARIO_DATA = (Metric<String>[]) new Metric<?>[] {
GROUP_SCENARIO_INFORMATION.createMetric("scenarioName"),
GROUP_SCENARIO_INFORMATION.createMetric("useCase"), GROUP_SCENARIO_INFORMATION.createMetric("metricType"),
GROUP_SCENARIO_INFORMATION.createMetric("workloadInPercent"),
GROUP_SCENARIO_INFORMATION.createMetric("amountOfIterations"),
GROUP_SCENARIO_INFORMATION.createMetric("measurementDuration"),
GROUP_SCENARIO_INFORMATION.createMetric("nicLimit") };
private MetricsProvider provider;
@Override
public void suiteStarted(SuiteEvent evt) {
provider = new MetricsProvider("energy_efficiency_metrics");
}
@Override
public void measurementEnded(IntervalEvent<?> evt) throws ListenerException {
Metrics metrics = evt.getContext().getMetrics();
MetricData metricData = metrics.getMetricData(provider);
metricData.set(GROUP_SCENARIO_INTERVALNAME, evt.getContext().getInterval().getName());
ArrayList<String> scenarioMetrics = new ArrayList<String>();
scenarioMetrics.add("test");
scenarioMetrics.add("test");
scenarioMetrics.add("test");
scenarioMetrics.add("test");
scenarioMetrics.add("test");
for (int i = 0; i < FIREWALL_SCENARIO_SCENARIO_DATA.length; i++) {
metricData.set(FIREWALL_SCENARIO_SCENARIO_DATA[i], scenarioMetrics.get(i));
}
}
}
}
// TEST
@Override
public void postMeasurementEnded(IntervalEvent<?> evt) throws ListenerException {
Metrics metrics = evt.getContext().getMetrics();
MetricData metricData = metrics.getMetricData(provider);
metricData.set(GROUP_SCENARIO_INTERVALNAME, evt.getContext().getInterval().getName());
ArrayList<String> scenarioMetrics = new ArrayList<String>();
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
scenarioMetrics.add("test2");
for (int i = 0; i < FIREWALL_SCENARIO_SCENARIO_DATA.length; i++) {
metricData.set(FIREWALL_SCENARIO_SCENARIO_DATA[i], scenarioMetrics.get(i));
}
}
}
Btw. Is there a possibility to set a configuration parameter to run the suite n-times?
Thank you very much in advance.
Cheers