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

net.anotheria.moskito.extensions.sampling.mappers.ServiceRequestStatsMapper Maven / Gradle / Ivy

The newest version!
package net.anotheria.moskito.extensions.sampling.mappers;

import net.anotheria.moskito.core.dynamic.IOnDemandStatsFactory;
import net.anotheria.moskito.core.predefined.ServiceStats;
import net.anotheria.moskito.core.predefined.ServiceStatsFactory;
import net.anotheria.moskito.core.producers.IStats;
import net.anotheria.moskito.extensions.sampling.Sample;
import net.anotheria.moskito.extensions.sampling.StatsMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * TODO comment this class
 *
 * @author lrosenberg
 * @since 24.04.15 23:42
 */
public class ServiceRequestStatsMapper implements StatsMapper{

	private static Logger log = LoggerFactory.getLogger(ServiceRequestStatsMapper.class);

	@Override
	public IOnDemandStatsFactory getFactory() {
		return ServiceStatsFactory.DEFAULT_INSTANCE;
	}

	public void updateStats(IStats statsObject, Sample sample){
		ServiceStats stats = (ServiceStats)statsObject;
		String totalTimeValue = getTotalTimeValue(sample);
		if (totalTimeValue == null) {
			log.warn("Can't retrieve total time from sample " + sample + ", ignoring sample");
			return;
		}
		try {
			long totalTime = Long.parseLong(totalTimeValue);
			stats.addExecutionTime(totalTime);
			stats.addRequest();
			stats.notifyRequestFinished();
			String errorFlag = getErrorFlag(sample);
			if (errorFlag != null && errorFlag.equals("true"))
				stats.notifyError();

		}catch(NumberFormatException e){
			log.warn("can't parse total time value "+totalTimeValue, e);
		}
	}

	protected String getTotalTimeValue(Sample sample){
		String value = sample.getValues().get("tt");
		if (value == null )
			value = sample.getValues().get("time");
		if (value == null )
			value = sample.getValues().get("totaltime");
		return value;
	}

	protected String getErrorFlag(Sample sample){
		String value = sample.getValues().get("error");
		if (value == null){
			value = sample.getValues().get("err");
		}
		return value;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy