
com.automationrockstars.gir.ui.part.MetricsService Maven / Gradle / Ivy
package com.automationrockstars.gir.ui.part;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.openqa.selenium.logging.LogEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.automationrockstars.base.ConfigLoader;
import com.automationrockstars.design.gir.webdriver.DriverFactory;
import com.google.common.base.CharMatcher;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
public class MetricsService {
private static final Logger LOG = LoggerFactory.getLogger(MetricsService.class);
public static void finished(Object host, Method method, Object[] args, long elapsed) {
LOG.info("Execution of {} took {} nanos",method.getName(),elapsed);
if (ConfigLoader.config().getBoolean("performance.run",false) && DriverFactory.isPhantom()){
logNow(host.toString(), method.getName(),"");
}
}
public static void logNow(String host, String method, String... pageFilter){
SimpleDateFormat sdf = new SimpleDateFormat("MM:dd-HH:mm:ss.SSS");
if (DriverFactory.isPhantom()){
for (LogEntry log : DriverFactory.getDriver().manage().logs().get("har").getAll()){
Map timings = timings(log.getMessage(), pageFilter);
MetricFileWriter.put(sdf.format(new Date(log.getTimestamp())), host, method, pageAndTime(timings));
MetricsRabbitWriter.log(host, method, data(timings));
}
}
}
private static Gson gson = new Gson();
public static synchronized String pageAndTime(Map timings){
String result = "";
for (String page : timings.keySet()){
result = String.format("%s, %s, %s",result,page, timings.get(page));
}
return result;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private synchronized static Map timings(String har, String... pageFilter){
Map content = gson.fromJson(har, HashMap.class);
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy