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

com.lazerycode.jmeter.analyzer.util.TemplateUtil Maven / Gradle / Ivy

Go to download

Parses JMeter result files and computes performance indicators such as average request duration

There is a newer version: 1.0.6
Show newest version
package com.lazerycode.jmeter.analyzer.util;

import com.lazerycode.jmeter.analyzer.AnalyzeMojo;
import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import static com.lazerycode.jmeter.analyzer.config.Environment.ENVIRONMENT;

/**
 * Utility for rendering Freemarker Templates
 *
 * @author Arne Franken, Peter Kaul
 */
public class TemplateUtil {

  /**
   * Quantiles resolution is 1000 so that we can get 99.9 percent
   */
  private static final int Q_QUANTILES = 1000;
  /**
   * Use this value to get the Quantile for 99.9 percent
   */
  private static final int K_99_PONT_9_PERCENT = 999;
  /**
   * Use this value to get the Quantile for 99 percent
   */
  private static final int K_99_PERCENT = 990;

  private static final int PERCENT_100 = 100;

  /**
   * Create rootMap with all necessary parameters/objects for Freemarker rendering
   *
   * @param self main object that will be accessed from Freemarker template
   *
   * @return populated map
   */
  public static Map getRootMap(Object self) {

    Map rootMap = new HashMap();
    rootMap.put("self", self);
    rootMap.put("Q_QUANTILES", Q_QUANTILES);
    rootMap.put("K_99_PERCENT", K_99_PERCENT);
    rootMap.put("K_99_PONT_9_PERCENT", K_99_PONT_9_PERCENT);
    rootMap.put("PERCENT_100", PERCENT_100);
    rootMap.put("DETAILS", ENVIRONMENT.isGenerateDetails());
    rootMap.put("CHARTS", ENVIRONMENT.isGenerateCharts());

    return rootMap;

  }

  /**
   * Try to load template from custom location.
   * Load bundled template from classpath in case no custom template is available or an error occurs
   *
   * @param templateName name of the template
   *
   * @return the template
   *
   * @throws IOException
   */
  public static Template getTemplate(String templateName) throws IOException {

    Template template = null;
    File templateDirectory = ENVIRONMENT.getTemplateDirectory();
    Configuration configuration = ENVIRONMENT.getConfiguration();

    if(templateDirectory != null && templateDirectory.isDirectory()) {
      if(new File(templateDirectory,templateName).exists()) {
        //load template from custom location
        configuration.setDirectoryForTemplateLoading(templateDirectory);
        template = configuration.getTemplate(templateName);
      }
    }

    if(template == null) {
      //custom location not configured. Load from classpath.
      configuration.setClassForTemplateLoading(AnalyzeMojo.class, "templates");
      template = configuration.getTemplate(templateName);
    }

    return template;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy