ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nc...@apache.org
Subject [28/50] [abbrv] ambari git commit: AMBARI-13926. AMS log file not getting updated or created on fresh deploy. (Aravindan Vijayan via swagle)
Date Wed, 18 Nov 2015 16:51:24 GMT
http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AMSJMeterLoadTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AMSJMeterLoadTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AMSJMeterLoadTest.java
new file mode 100644
index 0000000..c34ac20
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AMSJMeterLoadTest.java
@@ -0,0 +1,202 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.jmetertest.jmetertest;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.MetricsLoadSimulator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+public class AMSJMeterLoadTest {
+
+  private final static Logger LOG = LoggerFactory.getLogger(AMSJMeterLoadTest.class);
+  private static String PROPERTIES_FILE = "loadsimulator/ams-jmeter.properties";
+  private ScheduledExecutorService scheduledExecutorService = null;
+  private List<AppGetMetric> appGetMetrics;
+  private Properties amsJmeterProperties = null;
+
+  public AMSJMeterLoadTest(String testType, String userDefinedPropertiesFile) {
+
+    if (null == userDefinedPropertiesFile || userDefinedPropertiesFile.isEmpty()) {
+      this.amsJmeterProperties = readProperties(PROPERTIES_FILE);
+    } else {
+      this.amsJmeterProperties = readProperties(userDefinedPropertiesFile);
+    }
+
+    if ("U".equals(testType)) { //GET metrics simulator
+      int numInstances = Integer.valueOf(amsJmeterProperties.getProperty("num-ui-instances"));
+      this.scheduledExecutorService = Executors.newScheduledThreadPool(numInstances);
+      this.appGetMetrics = initializeGetMetricsPayload(amsJmeterProperties);
+      this.runTest(numInstances);
+    } else {                    //PUT Metrics simulator
+      Map<String, String> mapArgs = new HashMap<String, String>();
+      mapArgs.put("hostName", amsJmeterProperties.getProperty("host-prefix"));
+      mapArgs.put("numberOfHosts", amsJmeterProperties.getProperty("num-hosts"));
+      mapArgs.put("metricsHostName", amsJmeterProperties.getProperty("ams-host-port"));
+      mapArgs.put("collectInterval", amsJmeterProperties.getProperty("collection-interval"));
+      mapArgs.put("sendInterval", amsJmeterProperties.getProperty("send-interval"));
+      mapArgs.put("master", amsJmeterProperties.getProperty("create-master"));
+      MetricsLoadSimulator.startTest(mapArgs);
+    }
+  }
+
+  public static Properties readProperties(String propertiesFile) {
+    try {
+      Properties properties = new Properties();
+      InputStream inputStream = ClassLoader.getSystemResourceAsStream(propertiesFile);
+      if (inputStream == null) {
+        inputStream = new FileInputStream(propertiesFile);
+      }
+      properties.load(inputStream);
+      return properties;
+    } catch (IOException ioEx) {
+      LOG.error("Error reading properties file for jmeter");
+      return null;
+    }
+  }
+
+  private static List<GetMetricRequestInfo> readMetricsFromFile(String app) {
+    InputStream input = null;
+    List<GetMetricRequestInfo> metricList = new ArrayList<>();
+    String fileName = "ui_metrics_def/" + app + ".dat";
+
+    try {
+      input = ClassLoader.getSystemResourceAsStream(fileName);
+      BufferedReader reader = new BufferedReader(new InputStreamReader(input));
+      String line;
+      List<String> metrics = new ArrayList<>();
+      while ((line = reader.readLine()) != null) {
+
+        if (line.startsWith("|")) {
+          boolean needsTimestamps = line.contains("startTime");
+          boolean needsHost = line.contains("hostname");
+          metricList.add(new GetMetricRequestInfo(metrics, needsTimestamps, needsHost));
+          metrics.clear();
+        } else {
+          metrics.add(line);
+        }
+      }
+      return metricList;
+    } catch (IOException e) {
+      LOG.error("Cannot read file " + fileName + " for appID " + app, e);
+    } finally {
+      if (input != null) {
+        try {
+          input.close();
+        } catch (IOException ex) {
+        }
+      }
+    }
+    return null;
+  }
+
+  private static List<AppGetMetric> initializeGetMetricsPayload(Properties amsJmeterProperties) {
+
+    List<AppGetMetric> appGetMetrics = new ArrayList<AppGetMetric>();
+    String appsToTest = amsJmeterProperties.getProperty("apps-to-test");
+    String[] apps;
+
+    if (appsToTest != null && !appsToTest.isEmpty()) {
+      apps = StringUtils.split(appsToTest, ",");
+    } else {
+      apps = new String[JmeterTestPlanTask.ClientApp.values().length];
+      int ctr = 0;
+      for (JmeterTestPlanTask.ClientApp app : JmeterTestPlanTask.ClientApp.values())
+        apps[ctr++] = app.getId();
+    }
+
+    for (String app : apps) {
+
+      int interval = Integer.valueOf(amsJmeterProperties.getProperty("get-interval"));
+      String intervalString = amsJmeterProperties.getProperty(app + "-get-interval");
+      if (intervalString != null && !intervalString.isEmpty()) {
+        interval = Integer.valueOf(intervalString);
+      }
+      appGetMetrics.add(new AppGetMetric(readMetricsFromFile(app), interval, app));
+    }
+
+    return appGetMetrics;
+  }
+
+  public void runTest(int numInstances) {
+
+    int appRefreshRate = Integer.valueOf(amsJmeterProperties.getProperty("app-refresh-rate"));
+    for (int i = 0; i < numInstances; i++) {
+      ScheduledFuture future = scheduledExecutorService.scheduleAtFixedRate(new JmeterTestPlanTask(appGetMetrics,
+        amsJmeterProperties), 0, appRefreshRate, TimeUnit.MILLISECONDS);
+    }
+  }
+
+  /**
+   * Sample Usage:
+   * java -cp "lib/*":ambari-metrics-timelineservice-2.1.1.0.jar org.apache.hadoop.yarn.server.applicationhistoryservice
+   * .metrics.loadsimulator.jmeter.AMSJMeterLoadTest
+   * -t UI -p ambari-metrics-timelineservice/src/main/resources/jmeter/ams-jmeter.properties
+   */
+  public static void main(String[] args) {
+    Map<String, String> mapArgs = parseArgs(args);
+    String testType = mapArgs.get("type");
+    String amsJmeterPropertiesFile = mapArgs.get("amsJmeterPropertiesFile");
+    new AMSJMeterLoadTest(testType, amsJmeterPropertiesFile);
+  }
+
+  private static Map<String, String> parseArgs(String[] args) {
+    Map<String, String> mapProps = new HashMap<String, String>();
+    if (args.length == 0) {
+      printUsage();
+      throw new RuntimeException("Unexpected argument, See usage message.");
+    } else {
+      for (int i = 0; i < args.length; i += 2) {
+        String arg = args[i];
+        if (arg.equals("-t")) {
+          mapProps.put("type", args[i + 1]);
+        } else if (arg.equals("-p")) {
+          mapProps.put("amsJmeterPropertiesFile", args[i + 1]);
+        } else {
+          printUsage();
+          throw new IllegalArgumentException("Unexpected argument, See usage message.");
+        }
+      }
+    }
+    return mapProps;
+  }
+
+  public static void printUsage() {
+    System.err.println("Usage: java AMSJmeterLoadTest [OPTIONS]");
+    System.err.println("Options: ");
+    System.err.println("[-t type (S=>Sink/U=>UI)] [-p amsJmeterPropertiesFile (Optional)]");
+  }
+
+}
+
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AppGetMetric.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AppGetMetric.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AppGetMetric.java
new file mode 100644
index 0000000..a12cb4a
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/AppGetMetric.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.jmetertest.jmetertest;
+
+import java.util.List;
+
+public class AppGetMetric {
+
+  private String app;
+  private int interval;
+  private List<GetMetricRequestInfo> requests;
+
+  public AppGetMetric(List<GetMetricRequestInfo> requests, int interval, String app) {
+    this.setMetricRequests(requests);
+    this.setInterval(interval);
+    this.setApp(app);
+  }
+
+  public List<GetMetricRequestInfo> getMetricRequests() {
+    return requests;
+  }
+
+  public void setMetricRequests(List<GetMetricRequestInfo> requests) {
+    this.requests = requests;
+  }
+
+  public int getInterval() {
+    return interval;
+  }
+
+  public void setInterval(int interval) {
+    this.interval = interval;
+  }
+
+  public String getApp() {
+    return app;
+  }
+
+  public void setApp(String app) {
+    this.app = app;
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/GetMetricRequestInfo.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/GetMetricRequestInfo.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/GetMetricRequestInfo.java
new file mode 100644
index 0000000..4bd44d9
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/GetMetricRequestInfo.java
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.jmetertest.jmetertest;
+
+import org.apache.commons.lang.StringUtils;
+
+import java.util.List;
+
+
+public class GetMetricRequestInfo {
+
+  private String metricStringPayload;
+  private boolean needsTimestamps;
+  private boolean needsHost;
+
+  public GetMetricRequestInfo(List<String> metrics, boolean needsTimestamps, boolean needsHost) {
+
+    this.setMetricStringPayload(StringUtils.join(metrics, ","));
+    this.setNeedsTimestamps(needsTimestamps);
+    this.setNeedsHost(needsHost);
+  }
+
+  public String getMetricStringPayload() {
+    return metricStringPayload;
+  }
+
+  public void setMetricStringPayload(String metricStringPayload) {
+    this.metricStringPayload = metricStringPayload;
+  }
+
+  public boolean needsTimestamps() {
+    return needsTimestamps;
+  }
+
+  public void setNeedsTimestamps(boolean needsTimestamps) {
+    this.needsTimestamps = needsTimestamps;
+  }
+
+  public boolean needsHost() {
+    return needsHost;
+  }
+
+  public void setNeedsHost(boolean needsHost) {
+    this.needsHost = needsHost;
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/JmeterTestPlanTask.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/JmeterTestPlanTask.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/JmeterTestPlanTask.java
new file mode 100644
index 0000000..c6df162
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/loadsimulator/jmetertest/jmetertest/JmeterTestPlanTask.java
@@ -0,0 +1,276 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.jmetertest.jmetertest;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.jmeter.control.LoopController;
+import org.apache.jmeter.engine.StandardJMeterEngine;
+import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
+import org.apache.jmeter.protocol.http.util.HTTPConstants;
+import org.apache.jmeter.reporters.ResultCollector;
+import org.apache.jmeter.reporters.Summariser;
+import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.testelement.TestPlan;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.ThreadGroup;
+import org.apache.jmeter.timers.ConstantTimer;
+import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.collections.HashTree;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Random;
+
+public class JmeterTestPlanTask implements Runnable {
+
+  private static StandardJMeterEngine jmeterEngine = null;
+  private final static Logger LOG = LoggerFactory.getLogger(JmeterTestPlanTask.class);
+  private List<AppGetMetric> appGetMetrics;
+  private Properties amsJmeterProperties;
+  private HashTree amsTestPlanTree;
+  private TestPlan amsTestPlan;
+  private static final String JMETER_HOME = "loadsimulator";
+  private static final String JMETER_PROPERTIES_FILE = JMETER_HOME + "/jmeter.properties";
+  private static final String SAVESERVICE_PROPERTIES_FILE = JMETER_HOME + "/saveservice.properties";
+
+  public enum ClientApp {
+    HOST("HOST"),
+    NAMENODE("NAMENODE"),
+    HBASE("HBASE"),
+    NIMBUS("NIMBUS"),
+    KAFKA_BROKER("KAFKA_BROKER"),
+    FLUME_HANDLER("FLUME_HANDLER"),
+    AMS_HBASE("AMS-HBASE"),
+    NODEMANAGER("NODEMANAGER"),
+    RESOURCEMANAGER("RESOURCEMANAGER"),
+    DATANODE("DATANODE");
+
+    private String id;
+
+    private ClientApp(String id) {
+      this.id = id;
+    }
+
+    public String getId() {
+      return id;
+    }
+  }
+
+  public JmeterTestPlanTask(List<AppGetMetric> appGetMetrics, Properties amsJmeterProperties) {
+    this.appGetMetrics = appGetMetrics;
+    this.amsJmeterProperties = amsJmeterProperties;
+    amsTestPlanTree = new HashTree();
+    amsTestPlan = new TestPlan("AMS JMeter Load Test plan");
+    System.out.println("Starting AMS Jmeter load testing");
+  }
+
+  public void run() {
+    if (jmeterEngine != null) {
+
+      Object[] threadGroups = amsTestPlanTree.getArray(amsTestPlan);
+      for (Object threadGroupObj : threadGroups) {
+        if (threadGroupObj instanceof ThreadGroup) {
+          ThreadGroup threadGroup = (ThreadGroup) threadGroupObj;
+          threadGroup.stop();
+        }
+      }
+      amsTestPlanTree.clear();
+      jmeterEngine.askThreadsToStop();
+      jmeterEngine.stopTest();
+      JMeterContextService.endTest();
+    }
+
+    //Start the new test plan for the new app.
+    try {
+      //Initialize Jmeter essentials
+      jmeterEngine = new StandardJMeterEngine();
+      JMeterContextService.getContext().setEngine(jmeterEngine);
+
+      //Workaround to supply JMeterUtils with jmeter.prooperties from JAR.
+      JMeterUtils.setJMeterHome("");
+      Field f = new JMeterUtils().getClass().getDeclaredField("appProperties");
+      f.setAccessible(true);
+      f.set(null, AMSJMeterLoadTest.readProperties(JMETER_PROPERTIES_FILE));
+
+      //Copy saveservices.properties file to tmp dir for JMeter to consume.
+      InputStream inputStream = ClassLoader.getSystemResourceAsStream(SAVESERVICE_PROPERTIES_FILE);
+      if (inputStream == null) {
+        inputStream = new FileInputStream(SAVESERVICE_PROPERTIES_FILE);
+      }
+      String tmpDir = System.getProperty("java.io.tmpdir");
+      OutputStream outputStream = new FileOutputStream(tmpDir + "/saveservice.properties");
+      IOUtils.copy(inputStream, outputStream);
+      outputStream.close();
+      JMeterUtils.setProperty("saveservice_properties", tmpDir + "/saveservice.properties");
+
+      //Initialize Test plan
+      amsTestPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
+      amsTestPlanTree.add("AMS Test plan", amsTestPlan);
+
+      //Choose a random APP to run the perform GET metrics request.
+      int currentAppIndex = new Random().nextInt(appGetMetrics.size());
+
+      //Create ThreadGroup for the App
+      createThreadGroupHashTree(currentAppIndex, amsJmeterProperties, amsTestPlanTree, amsTestPlan);
+
+      //Geneates the JMX file that you can use through the GUI mode.
+      //SaveService.saveTree(amsTestPlanTree, new FileOutputStream(JMETER_HOME + "/" + "amsTestPlan.jmx"));
+
+      //Summarizer output to get test progress in stdout like.
+      Summariser summariser = null;
+      String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
+      if (summariserName.length() > 0) {
+        summariser = new Summariser(summariserName);
+      }
+
+      //Store execution results into a .jtl file
+      String jmeterLogFile = tmpDir + "/amsJmeterTestResults.jtl";
+      ResultCollector resultCollector = new ResultCollector(summariser);
+      resultCollector.setFilename(jmeterLogFile);
+      amsTestPlanTree.add(amsTestPlanTree.getArray()[0], resultCollector);
+      jmeterEngine.configure(amsTestPlanTree);
+      jmeterEngine.run();
+
+      LOG.info("AMS Jmeter Test started up successfully");
+
+    } catch (Exception ioEx) {
+      amsTestPlanTree.clear();
+      jmeterEngine.askThreadsToStop();
+      jmeterEngine.stopTest();
+      JMeterContextService.endTest();
+      LOG.error("Error occurred while running AMS load test : " + ioEx.getMessage());
+      ioEx.printStackTrace();
+    }
+  }
+
+  private ConstantTimer createConstantTimer(int delay) {
+    ConstantTimer timer = new ConstantTimer();
+    timer.setDelay("" + delay);
+    return timer;
+  }
+
+  private Map<String, String> getAppSpecificParameters(String app, GetMetricRequestInfo request, Properties amsJmeterProperties) {
+
+    Map<String, String> parametersMap = new HashMap<String, String>();
+    String hostPrefix = amsJmeterProperties.getProperty("host-prefix");
+    String hostSuffix = amsJmeterProperties.getProperty("host-suffix");
+    int minHostIndex = Integer.valueOf(amsJmeterProperties.getProperty("min-host-index"));
+    int numHosts = Integer.valueOf(amsJmeterProperties.getProperty("num-hosts"));
+
+    parametersMap.put("appId", app);
+
+    if (request.needsTimestamps()) {
+      long currentTime = System.currentTimeMillis();
+      long oneHourBack = currentTime - 3600 * 1000;
+      parametersMap.put("startTime", String.valueOf(oneHourBack));
+      parametersMap.put("endTime", String.valueOf(currentTime));
+    }
+
+    if (request.needsHost()) {
+      if (ClientApp.AMS_HBASE.getId().equals(app)) {
+        parametersMap.put("hostname", amsJmeterProperties.getProperty("ams-host"));
+      } else if (ClientApp.HOST.getId().equals(app) || ClientApp.NODEMANAGER.getId().equals(app)) {
+        int randomHost = minHostIndex + new Random().nextInt(numHosts);
+        parametersMap.put("hostname", hostPrefix + randomHost + hostSuffix);
+      } else {
+        parametersMap.put("hostname", hostPrefix + amsJmeterProperties.getProperty(app + "-host") + hostSuffix);
+      }
+    }
+    parametersMap.put("metricNames", request.getMetricStringPayload());
+    return parametersMap;
+  }
+
+  private void createThreadGroupHashTree(int appIndex, Properties amsJmeterProperties, HashTree amsTestPlanTree, TestPlan amsTestPlan) {
+
+    AppGetMetric appGetMetric = appGetMetrics.get(appIndex);
+    String app = appGetMetric.getApp();
+    int interval = appGetMetric.getInterval();
+
+    //Read and validate AMS information.
+    String[] amsHostPort = amsJmeterProperties.getProperty("ams-host-port").split(":");
+    String amsHost = amsHostPort[0];
+    String amsPath = amsJmeterProperties.getProperty("ams-path");
+    int amsPort = Integer.valueOf(amsHostPort[1]);
+    int numLoops = Integer.valueOf(amsJmeterProperties.getProperty("num-get-calls-per-app"));
+
+    LoopController loopController = createLoopController(app + " GET loop controller", numLoops, false);
+    for (GetMetricRequestInfo request : appGetMetric.getMetricRequests()) {
+
+      ThreadGroup threadGroup = createThreadGroup(app + " GET threadGroup", 1, 0, loopController);
+
+      HashTree threadGroupHashTree = amsTestPlanTree.add(amsTestPlan, threadGroup);
+      Map<String, String> parametersMap = getAppSpecificParameters(app, request, amsJmeterProperties);
+
+      HTTPSampler sampler = createGetSampler("GET " + app + " metrics", amsHost, amsPort, amsPath, null, parametersMap);
+
+      if (numLoops > 1) {
+        threadGroupHashTree.add(createConstantTimer(interval));
+      }
+
+      threadGroupHashTree.add(sampler);
+    }
+  }
+
+  private HTTPSampler createGetSampler(String name, String domain, int port, String path, String encoding, Map<String, String> parameters) {
+
+    HTTPSampler sampler = new HTTPSampler();
+    sampler.setDomain(domain);
+    sampler.setPort(port);
+    sampler.setPath(path);
+    sampler.setMethod(HTTPConstants.GET);
+
+    if (encoding != null)
+      sampler.setContentEncoding(encoding);
+
+    for (Map.Entry<String, String> entry : parameters.entrySet()) {
+      sampler.addArgument(entry.getKey(), entry.getValue());
+    }
+    sampler.setName(name);
+    return sampler;
+  }
+
+  private LoopController createLoopController(String name, int numLoops, boolean continueForever) {
+    LoopController loopController = new LoopController();
+    loopController.setLoops(numLoops);
+    loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
+    loopController.initialize();
+    loopController.setContinueForever(continueForever);
+    loopController.setName(name);
+    return loopController;
+  }
+
+  private ThreadGroup createThreadGroup(String name, int numThreads, int rampUp, LoopController loopController) {
+    ThreadGroup threadGroup = new ThreadGroup();
+    threadGroup.setName(name);
+    threadGroup.setNumThreads(numThreads);
+    threadGroup.setRampUp(rampUp);
+    threadGroup.setSamplerController(loopController);
+    threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
+    return threadGroup;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/README
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/README b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/README
new file mode 100644
index 0000000..39e5365
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/README
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ WORKING OF THE AMS LOAD SIMULATOR
+ The AMS load simulator is designed to perform load testing on a live AMS instance by performing the role of either a
+ sink or an Ambari UI instance based on how it is being invoked.
+
+  > When it acts as a host sink, it makes calls to the AMS to PUT metrics for all the services for a defined interval.
+  The simulator can also be used to start up "N" such host instances where each instance has a number of Sinks that PUT
+  metrics.
+  > When the load simulator is invoked as a UI instance, it makes GET metrics calls to the AMS in defined
+  intervals for all the services. The rate of the GET metrics call and the list of metrics requested has been designed
+  to closely match an actual Ambari UI instance. Apache JMeter API has been used to design the GET calls made to the
+  AMS.
+
+  The load simulator uses a properties file (ams-jmeter.properties) file to configure the test run. It is part of the
+  JAR in the same folder as this README file. It can also be supplied as a command line argument to the test using the
+  "-p" option. Other properties files like jmeter.properties and saveservice.properties contain JMeter internal
+  properties and need not be modified.
+
+
+ INSTRUCTIONS TO RUN THE SIMULATOR
+ 1. Modify the ams-jmeter.properties to point to your AMS host. Change the properties "num-hosts" based on how many hosts
+    need to be simulated for sinks. The GET Metric section of the properties is used for fine tuning GET call interval
+    for every APP type.
+ 2. Build the ambari-metrics-timelineservice jar.
+ 3. Invoke the test using the command as follows.
+
+   java -cp lib/*:ambari-metrics-timelineservice-<version>.jar org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.jmeter.AMSJMeterLoadTest -t <S/U>
+
+   lib/* -> All the dependency JARs generated for the ambari-metrics-timelineservice JAR.
+   -t option => S-Sink simulator or U-UI simulator
+   You can use the -p <location of ams-jmeter.properties> option to pass in your own properties file.
+
+ 4. Test results will be found at <TMP_DIR>/amsTestResults.jtl.
+ 5. Open the amsJmeterGrpah.jmx file through a JMeter GUI instance and supply the results (amsTestResults.jtl) file as
+    input to the Graph to be drawn.
+
+ TESTING ON GCE
+
+ 1. Copy the JAR, libs, optional ams-jmeter.properties file to all the machines on which the test needs to be run.
+ 2. Sink simulation for num-hosts = N.
+    Start the test with -t S on 1 machine with property "create-master=true".
+    Start the test with -t S on N-1 machines with property "create-master=false"
+ 3. UI simulation
+    Start the test with -t U on 1 or more machines.
+ 4. To stop the test after you have sufficient load testing done, the following command should be run on all machines.
+    ps axf | grep jmeter | grep -v grep | awk '{print "kill -9 " $1}' | sh
+ 5. Copy over the results file to a location with JMeter downloaded. Open the amsJmeterGraph.jmx on jmeter and browse to
+    open the results file as input to the graph.

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/ams-jmeter.properties
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/ams-jmeter.properties b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/ams-jmeter.properties
new file mode 100644
index 0000000..2c44d89
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/ams-jmeter.properties
@@ -0,0 +1,56 @@
+# Copyright 2011 The Apache Software Foundation
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#AMS information
+ams-host-port=c6402.ambari.apache.org:6188
+ams-path=/ws/v1/timeline/metrics
+
+# Host Information, using the host-prefix, num-hosts and <MASTER>-host
+# Hosts in this case will be TestHost0, TestHost1
+# For example NAMENODE, NIMBUS,HBASE MASTER,RESOURCEMANAGER host will be TestHost0
+host-prefix=TestHost
+host-suffix=
+min-host-index=0
+num-hosts=2
+NAMENODE-host=0
+NIMBUS-host=0
+HBASE-host=0
+RESOURCEMANAGER-host=0
+
+# PUT Metric / Sinks config
+collection-interval=1000
+send-interval=3000
+create-master=true
+
+# GET Metric / Client Apps config
+num-ui-instances=1
+apps-to-test=
+app-refresh-rate=8000
+num-get-calls-per-app=3
+get-interval=3000
+HOST-get-interval=3000
+NAMENODE-get-interval=2000
+HBASE-get-interval=3000
+NIMBUS-get-interval=2000
+AMS-HBASE-get-interval=2000
+FLUME_HANDLER-get-interval=2000
+NODEMANAGER-get-interval=2000
+KAFKA_BROKER-get-interval=2000
+DATANODE-get-interval=3000
+RESOURCEMANAGER-get-interval=3000
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/amsJmeterGraph.jmx
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/amsJmeterGraph.jmx b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/amsJmeterGraph.jmx
new file mode 100644
index 0000000..06d6360
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/amsJmeterGraph.jmx
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<jmeterTestPlan version="1.2" properties="2.8" jmeter="2.13 r1665067">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Latency Graph" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>false</time>
+            <latency>false</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>false</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>false</assertions>
+            <subresults>false</subresults>
+            <responseData>true</responseData>
+            <samplerData>true</samplerData>
+            <xml>true</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>true</responseHeaders>
+            <requestHeaders>true</requestHeaders>
+            <responseDataOnError>true</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <url>true</url>
+            <hostname>true</hostname>
+            <sampleCount>true</sampleCount>
+          </value>
+        </objProp>
+        <stringProp name="filename">/tmp/amsJmeterTestResults.jtl</stringProp>
+      </ResultCollector>
+      <hashTree/>
+      <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>false</time>
+            <latency>false</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>false</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>false</assertions>
+            <subresults>false</subresults>
+            <responseData>true</responseData>
+            <samplerData>true</samplerData>
+            <xml>true</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>true</responseHeaders>
+            <requestHeaders>true</requestHeaders>
+            <responseDataOnError>true</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <url>true</url>
+            <hostname>true</hostname>
+            <sampleCount>true</sampleCount>
+          </value>
+        </objProp>
+        <stringProp name="filename">/tmp/amsJmeterTestResults.jtl</stringProp>
+        <stringProp name="RespTimeGraph.interval">15000</stringProp>
+        <intProp name="RespTimeGraph.linestrockwidth">2</intProp>
+        <intProp name="RespTimeGraph.lineshapepoint">4</intProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>

http://git-wip-us.apache.org/repos/asf/ambari/blob/6ddab1b0/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/jmeter.properties
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/jmeter.properties b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/jmeter.properties
new file mode 100644
index 0000000..9fcf7ca
--- /dev/null
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/resources/loadsimulator/jmeter.properties
@@ -0,0 +1,1172 @@
+################################################################################
+# Apache JMeter Property file
+################################################################################
+
+##   Licensed to the Apache Software Foundation (ASF) under one or more
+##   contributor license agreements.  See the NOTICE file distributed with
+##   this work for additional information regarding copyright ownership.
+##   The ASF licenses this file to You under the Apache License, Version 2.0
+##   (the "License"); you may not use this file except in compliance with
+##   the License.  You may obtain a copy of the License at
+## 
+##       http://www.apache.org/licenses/LICENSE-2.0
+## 
+##   Unless required by applicable law or agreed to in writing, software
+##   distributed under the License is distributed on an "AS IS" BASIS,
+##   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+##   See the License for the specific language governing permissions and
+##   limitations under the License.
+
+################################################################################
+#
+#                      THIS FILE SHOULD NOT BE MODIFIED
+#
+# This avoids having to re-apply the modifications when upgrading JMeter
+# Instead only user.properties should be modified:
+# 1/ copy the property you want to modify to user.properties from jmeter.properties
+# 2/ Change its value there
+#
+################################################################################
+
+#Preferred GUI language. Comment out to use the JVM default locale's language.
+#language=en
+
+# Additional locale(s) to add to the displayed list.
+# The current default list is: en, fr, de, no, es, tr, ja, zh_CN, zh_TW, pl, pt_BR
+# [see JMeterMenuBar#makeLanguageMenu()]
+# The entries are a comma-separated list of language names
+#locales.add=zu
+
+# Netscape HTTP Cookie file
+cookies=cookies
+
+#---------------------------------------------------------------------------
+# File format configuration for JMX and JTL files
+#---------------------------------------------------------------------------
+
+# Properties:
+# file_format          - affects both JMX and JTL files
+# file_format.testplan - affects JMX files only
+# file_format.testlog  - affects JTL files only
+#
+# Possible values are:
+# 2.1 - initial format using XStream
+# 2.2 - updated format using XStream, with shorter names
+
+# N.B. format 2.0 (Avalon) is no longer supported
+
+#---------------------------------------------------------------------------
+# XML Parser
+#---------------------------------------------------------------------------
+
+# XML Reader(Parser) - Must implement SAX 2 specs
+xml.parser=org.apache.xerces.parsers.SAXParser
+
+# Path to a Properties file containing Namespace mapping in the form
+# prefix=Namespace
+# Example:
+# ns=http://biz.aol.com/schema/2006-12-18
+#xpath.namespace.config=
+
+#---------------------------------------------------------------------------
+# SSL configuration
+#---------------------------------------------------------------------------
+
+## SSL System properties are now in system.properties
+
+# JMeter no longer converts javax.xxx property entries in this file into System properties.
+# These must now be defined in the system.properties file or on the command-line.
+# The system.properties file gives more flexibility.
+
+# By default, SSL session contexts are now created per-thread, rather than being shared.
+# The original behaviour can be enabled by setting the JMeter property:
+#https.sessioncontext.shared=true
+
+# Default HTTPS protocol level:
+#https.default.protocol=TLS
+# This may need to be changed here (or in user.properties) to:
+#https.default.protocol=SSLv3
+
+# List of protocols to enable. You may have to select only a subset if you find issues with target server.
+# This is needed when server does not support Socket version negotiation, this can lead to:
+# javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
+# java.net.SocketException: Connection reset
+# see https://issues.apache.org/bugzilla/show_bug.cgi?id=54759
+#https.socket.protocols=SSLv2Hello SSLv3 TLSv1
+
+# Control if we allow reuse of cached SSL context between iterations
+# set the value to 'false' to reset the SSL context each iteration
+#https.use.cached.ssl.context=true
+
+# Start and end index to be used with keystores with many entries
+# The default is to use entry 0, i.e. the first
+#https.keyStoreStartIndex=0
+#https.keyStoreEndIndex=0
+
+#---------------------------------------------------------------------------
+# Look and Feel configuration
+#---------------------------------------------------------------------------
+
+#Classname of the Swing default UI
+#
+# The LAF classnames that are available are now displayed as ToolTip text
+# when hovering over the Options/Look and Feel selection list.
+#
+# You can either use a full class name, as shown above,
+# or one of the strings "System" or "CrossPlatform" which means
+#  JMeter will use the corresponding string returned by UIManager.get<name>LookAndFeelClassName()
+
+# LAF can be overridden by os.name (lowercased, spaces replaced by '_')
+# Sample os.name LAF:
+#jmeter.laf.windows_xp=javax.swing.plaf.metal.MetalLookAndFeel
+
+# Failing that, the OS family = os.name, but only up to first space:
+# Sample OS family LAF:
+#jmeter.laf.windows=com.sun.java.swing.plaf.windows.WindowsLookAndFeel
+
+# Mac apparently looks better with the System LAF
+jmeter.laf.mac=System
+
+# Failing that, the JMeter default laf can be defined:
+#jmeter.laf=System
+
+# If none of the above jmeter.laf properties are defined, JMeter uses the CrossPlatform LAF.
+# This is because the CrossPlatform LAF generally looks better than the System LAF.
+# See https://issues.apache.org/bugzilla/show_bug.cgi?id=52026 for details
+# N.B. the laf can be defined in user.properties.
+
+# LoggerPanel display
+# default to false
+#jmeter.loggerpanel.display=false
+
+# Enable LogViewer Panel to receive log event even if closed
+# Enabled since 2.12
+# Note this has some impact on performances, but as GUI mode must
+# not be used for Load Test it is acceptable
+#jmeter.loggerpanel.enable_when_closed=true
+
+# Error/Fatal Log count display
+# defaults to true
+#jmeter.errorscounter.display=true
+
+# Max characters kept in LoggerPanel, default to 80000 chars
+# O means no limit
+#jmeter.loggerpanel.maxlength=80000
+
+# Toolbar display
+# default:
+#jmeter.toolbar.display=true
+# Toolbar icon definitions
+#jmeter.toolbar.icons=org/apache/jmeter/images/toolbar/icons-toolbar.properties
+# Toolbar list
+#jmeter.toolbar=new,open,close,save,save_as_testplan,|,cut,copy,paste,|,expand,collapse,toggle,|,test_start,test_stop,test_shutdown,|,test_start_remote_all,test_stop_remote_all,test_shutdown_remote_all,|,test_clear,test_clear_all,|,search,search_reset,|,function_helper,help
+# Toolbar icons default size: 22x22. Available sizes are: 22x22, 32x32, 48x48
+#jmeter.toolbar.icons.size=22x22
+
+# Icon definitions
+# default:
+#jmeter.icons=org/apache/jmeter/images/icon.properties
+# alternate:
+#jmeter.icons=org/apache/jmeter/images/icon_1.properties
+
+#Components to not display in JMeter GUI (GUI class name or static label)
+# These elements are deprecated: HTML Parameter Mask,HTTP User Parameter Modifier, Webservice (SOAP) Request
+not_in_menu=org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui, HTTP User Parameter Modifier, org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui
+
+# Number of items in undo history
+# Feature is disabled by default (0)
+# Set it to a number > 0 (25 can be a good default)
+# The bigger it is, the more it consumes memory
+#undo.history.size=0
+
+#---------------------------------------------------------------------------
+# Remote hosts and RMI configuration
+#---------------------------------------------------------------------------
+
+# Remote Hosts - comma delimited
+remote_hosts=127.0.0.1
+#remote_hosts=localhost:1099,localhost:2010
+
+# RMI port to be used by the server (must start rmiregistry with same port)
+#server_port=1099
+
+# To change the port to (say) 1234:
+# On the server(s)
+# - set server_port=1234
+# - start rmiregistry with port 1234
+# On Windows this can be done by:
+# SET SERVER_PORT=1234
+# JMETER-SERVER
+#
+# On Unix:
+# SERVER_PORT=1234 jmeter-server
+#
+# On the client:
+# - set remote_hosts=server:1234
+
+# Parameter that controls the RMI port used by the RemoteSampleListenerImpl (The Controler)
+# Default value is 0 which means port is randomly assigned
+# You may need to open Firewall port on the Controller machine
+#client.rmi.localport=0
+
+# When distributed test is starting, there may be several attempts to initialize
+# remote engines. By default, only single try is made. Increase following property
+# to make it retry for additional times
+#client.tries=1
+
+# If there is initialization retries, following property sets delay between attempts
+#client.retries_delay=5000
+
+# When all initialization tries was made, test will fail if some remote engines are failed
+# Set following property to true to ignore failed nodes and proceed with test 
+#client.continue_on_fail=false
+
+# To change the default port (1099) used to access the server:
+#server.rmi.port=1234
+
+# To use a specific port for the JMeter server engine, define
+# the following property before starting the server:
+#server.rmi.localport=4000
+
+# From JMeter 2.3.1, the jmeter server creates the RMI registry as part of the server process.
+# To stop the server creating the RMI registry:
+#server.rmi.create=false
+
+# From JMeter 2.3.1, define the following property to cause JMeter to exit after the first test
+#server.exitaftertest=true
+
+# Prefix used by IncludeController when building file name
+#includecontroller.prefix=
+
+#---------------------------------------------------------------------------
+#         Logging Configuration
+#---------------------------------------------------------------------------
+
+# Note: JMeter uses Avalon (Excalibur) LogKit
+
+# Logging Format
+# see http://excalibur.apache.org/apidocs/org/apache/log/format/PatternFormatter.html
+
+#
+# Default format:
+#log_format=%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} - %{category}: %{message} %{throwable}
+# \n is automatically added to the end of the string
+#
+# Predefined formats in the JMeter LoggingManager:
+#log_format_type=default
+#log_format_type=thread_prefix
+#log_format_type=thread_suffix
+# default is as above
+# thread_prefix adds the thread name as a prefix to the category
+# thread_suffix adds the thread name as a suffix to the category
+# Note that thread name is not included by default, as it requires extra processing.
+#
+# To change the logging format, define either log_format_type or log_format
+# If both are defined, the type takes precedence
+# Note that these properties cannot be defined using the -J or -D JMeter
+# command-line flags, as the format will have already been determined by then
+# However, they can be defined as JVM properties
+
+#Logging levels for the logging categories in JMeter.  Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
+# To set the log level for a package or individual class, use:
+# log_level.[package_name].[classname]=[PRIORITY_LEVEL]
+# But omit "org.apache" from the package name.  The classname is optional.  Further examples below.
+
+log_level.jmeter=WARN
+log_level.jmeter.junit=WARN
+log_level.jmeter.control=WARN
+log_level.jmeter.testbeans=WARN
+log_level.jmeter.engine=WARN
+log_level.jmeter.threads=WARN
+log_level.jmeter.gui=WARN
+log_level.jmeter.testelement=WARN
+log_level.jmeter.util=WARN
+log_level.jmeter.protocol.http=WARN
+# For CookieManager, AuthManager etc:
+#log_level.jmeter.protocol.http.control=DEBUG
+#log_level.jmeter.protocol.ftp=WARN
+#log_level.jmeter.protocol.jdbc=DEBUG
+#log_level.jmeter.protocol.java=WARN
+#log_level.jmeter.testelements.property=DEBUG
+log_level.jorphan=WARN
+	
+
+#Log file for log messages.
+# You can specify a different log file for different categories via:
+# log_file.[category]=[filename]
+# category is equivalent to the package/class names described above
+
+# Combined log file (for jmeter and jorphan)
+log_file=/var/log/jmeter.log
+# To redirect logging to standard output, try the following:
+# (it will probably report an error, but output will be to stdout)
+#log_file=
+
+# Or define separate logs if required:
+#log_file.jorphan=jorphan.log
+#log_file.jmeter=jmeter.log
+
+# If the filename contains  paired single-quotes, then the name is processed
+# as a SimpleDateFormat format applied to the current date, for example:
+#log_file='jmeter_'yyyyMMddHHmmss'.tmp'
+
+# N.B. When JMeter starts, it sets the system property:
+#    org.apache.commons.logging.Log
+# to
+#    org.apache.commons.logging.impl.LogKitLogger
+# if not already set. This causes Apache and Commons HttpClient to use the same logging as JMeter
+
+# Further logging configuration
+# Excalibur logging provides the facility to configure logging using
+# configuration files written in XML. This allows for such features as
+# log file rotation which are not supported directly by JMeter.
+#
+# If such a file specified, it will be applied to the current logging
+# hierarchy when that has been created.
+# 
+#log_config=logkit.xml
+
+#---------------------------------------------------------------------------
+# HTTP Java configuration
+#---------------------------------------------------------------------------
+
+# Number of connection retries performed by HTTP Java sampler before giving up
+#http.java.sampler.retries=10
+# 0 now means don't retry connection (in 2.3 and before it meant no tries at all!)
+
+#---------------------------------------------------------------------------
+# Commons HTTPClient configuration
+#---------------------------------------------------------------------------
+
+# define a properties file for overriding Commons HttpClient parameters
+# See: http://hc.apache.org/httpclient-3.x/preference-api.html
+# Uncomment this line if you put anything in httpclient.parameters file
+#httpclient.parameters.file=httpclient.parameters
+
+
+# define a properties file for overriding Apache HttpClient parameters
+# See: TBA
+# Uncomment this line if you put anything in hc.parameters file
+#hc.parameters.file=hc.parameters
+
+# Following properties apply to both Commons and Apache HttpClient
+
+# set the socket timeout (or use the parameter http.socket.timeout) 
+# for AJP Sampler and HttpClient3 implementation.
+# Note for HttpClient3 implementation it is better to use GUI to set timeout 
+# or use http.socket.timeout in httpclient.parameters
+# Value is in milliseconds
+#httpclient.timeout=0
+# 0 == no timeout
+
+# Set the http version (defaults to 1.1)
+#httpclient.version=1.0 (or use the parameter http.protocol.version)
+
+# Define characters per second > 0 to emulate slow connections
+#httpclient.socket.http.cps=0
+#httpclient.socket.https.cps=0
+
+#Enable loopback protocol
+#httpclient.loopback=true
+
+# Define the local host address to be used for multi-homed hosts
+#httpclient.localaddress=1.2.3.4
+
+# AuthManager Kerberos configuration
+# Name of application module used in jaas.conf
+#kerberos_jaas_application=JMeter  
+
+# Should ports be stripped from urls before constructing SPNs
+# for spnego authentication
+#kerberos.spnego.strip_port=true
+
+#         Sample logging levels for Commons HttpClient
+#
+# Commons HttpClient Logging information can be found at:
+# http://hc.apache.org/httpclient-3.x/logging.html
+
+# Note that full category names are used, i.e. must include the org.apache.
+# Info level produces no output:
+#log_level.org.apache.commons.httpclient=debug
+# Might be useful:
+#log_level.org.apache.commons.httpclient.Authenticator=trace 
+
+# Show headers only
+#log_level.httpclient.wire.header=debug
+
+# Full wire debug produces a lot of output; consider using separate file:
+#log_level.httpclient.wire=debug
+#log_file.httpclient=httpclient.log
+
+
+#         Apache Commons HttpClient logging examples
+#
+# Enable header wire + context logging - Best for Debugging
+#log_level.org.apache.http=DEBUG
+#log_level.org.apache.http.wire=ERROR
+
+# Enable full wire + context logging
+#log_level.org.apache.http=DEBUG
+
+# Enable context logging for connection management
+#log_level.org.apache.http.impl.conn=DEBUG
+
+# Enable context logging for connection management / request execution
+#log_level.org.apache.http.impl.conn=DEBUG
+#log_level.org.apache.http.impl.client=DEBUG
+#log_level.org.apache.http.client=DEBUG
+
+#---------------------------------------------------------------------------
+# Apache HttpComponents HTTPClient configuration (HTTPClient4)
+#---------------------------------------------------------------------------
+
+# Number of retries to attempt (default 0)
+#httpclient4.retrycount=0
+
+# Idle connection timeout (ms) to apply if the server does not send Keep-Alive headers
+#httpclient4.idletimeout=0
+# Note: this is currently an experimental fix
+
+#---------------------------------------------------------------------------
+# Apache HttpComponents HTTPClient configuration (HTTPClient 3.1)
+#---------------------------------------------------------------------------
+
+# Number of retries to attempt (default 0)
+#httpclient3.retrycount=0
+
+#---------------------------------------------------------------------------
+# HTTP Cache Manager configuration
+#---------------------------------------------------------------------------
+#
+# Space or comma separated list of methods that can be cached
+#cacheable_methods=GET
+# N.B. This property is currently a temporary solution for Bug 56162
+
+# Since 2.12, JMeter does not create anymore a Sample Result with 204 response 
+# code for a resource found in cache which is inline with what browser do.
+#cache_manager.cached_resource_mode=RETURN_NO_SAMPLE
+
+# You can choose between 3 modes:
+# RETURN_NO_SAMPLE (default)
+# RETURN_200_CACHE
+# RETURN_CUSTOM_STATUS
+
+# Those mode have the following behaviours:
+# RETURN_NO_SAMPLE : this mode returns no Sample Result, it has no additional configuration
+# RETURN_200_CACHE : this mode will return Sample Result with response code to 200 and response message to "(ex cache)", you can modify response message by setting 
+# RETURN_200_CACHE.message=(ex cache)
+# RETURN_CUSTOM_STATUS : This mode lets you select what response code and message you want to return, if you use this mode you need to set those properties
+# RETURN_CUSTOM_STATUS.code=
+# RETURN_CUSTOM_STATUS.message=
+
+#---------------------------------------------------------------------------
+# Results file configuration
+#---------------------------------------------------------------------------
+
+# This section helps determine how result data will be saved.
+# The commented out values are the defaults.
+
+# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
+#jmeter.save.saveservice.output_format=csv
+
+
+# true when field should be saved; false otherwise
+
+# assertion_results_failure_message only affects CSV output
+#jmeter.save.saveservice.assertion_results_failure_message=false
+#
+# legitimate values: none, first, all
+#jmeter.save.saveservice.assertion_results=none
+#
+jmeter.save.saveservice.data_type=csv
+jmeter.save.saveservice.label=true
+jmeter.save.saveservice.response_code=true
+# response_data is not currently supported for CSV output
+#jmeter.save.saveservice.response_data=false
+# Save ResponseData for failed samples
+jmeter.save.saveservice.response_data.on_error=false
+jmeter.save.saveservice.response_message=false
+jmeter.save.saveservice.successful=false
+jmeter.save.saveservice.thread_name=false
+jmeter.save.saveservice.time=true
+jmeter.save.saveservice.subresults=false
+jmeter.save.saveservice.assertions=false
+jmeter.save.saveservice.latency=true
+jmeter.save.saveservice.connect_time=true
+#jmeter.save.saveservice.samplerData=false
+#jmeter.save.saveservice.responseHeaders=false
+#jmeter.save.saveservice.requestHeaders=false
+#jmeter.save.saveservice.encoding=false
+jmeter.save.saveservice.bytes=false
+#jmeter.save.saveservice.url=false
+#jmeter.save.saveservice.filename=false
+jmeter.save.saveservice.hostname=false
+jmeter.save.saveservice.thread_counts=false
+jmeter.save.saveservice.sample_count=false
+#jmeter.save.saveservice.idle_time=false
+
+# Timestamp format - this only affects CSV output files
+# legitimate values: none, ms, or a format suitable for SimpleDateFormat
+#jmeter.save.saveservice.timestamp_format=ms
+jmeter.save.saveservice.timestamp_format=HH:mm:ss
+
+# For use with Comma-separated value (CSV) files or other formats
+# where the fields' values are separated by specified delimiters.
+# Default:
+#jmeter.save.saveservice.default_delimiter=,
+# For TAB, since JMeter 2.3 one can use:
+jmeter.save.saveservice.default_delimiter=;
+
+# Only applies to CSV format files:
+jmeter.save.saveservice.print_field_names=true
+
+# Optional list of JMeter variable names whose values are to be saved in the result data files.
+# Use commas to separate the names. For example:
+#sample_variables=SESSION_ID,REFERENCE
+# N.B. The current implementation saves the values in XML as attributes,
+# so the names must be valid XML names.
+# Versions of JMeter after 2.3.2 send the variable to all servers
+# to ensure that the correct data is available at the client.
+
+# Optional xml processing instruction for line 2 of the file:
+#jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>
+
+# Prefix used to identify filenames that are relative to the current base
+#jmeter.save.saveservice.base_prefix=~/
+
+# AutoFlush on each line written in XML or CSV output
+# Setting this to true will result in less test results data loss in case of Crash
+# but with impact on performances, particularly for intensive tests (low or no pauses)
+# Since JMeter 2.10, this is false by default:q!
+jmeter.save.saveservice.autoflush=true
+
+#---------------------------------------------------------------------------
+# Settings that affect SampleResults
+#---------------------------------------------------------------------------
+
+# Save the start time stamp instead of the end
+# This also affects the timestamp stored in result files
+sampleresult.timestamp.start=true
+
+# Whether to use System.nanoTime() - otherwise only use System.currentTimeMillis()
+#sampleresult.useNanoTime=true
+
+# Use a background thread to calculate the nanoTime offset
+# Set this to <= 0 to disable the background thread
+#sampleresult.nanoThreadSleep=5000
+
+#---------------------------------------------------------------------------
+# Upgrade property
+#---------------------------------------------------------------------------
+
+# File that holds a record of name changes for backward compatibility issues
+upgrade_properties=/bin/upgrade.properties
+
+#---------------------------------------------------------------------------
+# JMeter Test Script recorder configuration
+#
+# N.B. The element was originally called the Proxy recorder, which is why the
+# properties have the prefix "proxy".
+#---------------------------------------------------------------------------
+
+# If the recorder detects a gap of at least 5s (default) between HTTP requests,
+# it assumes that the user has clicked a new URL
+#proxy.pause=5000
+
+# Add numeric prefix to Sampler names (default true)
+#proxy.number.requests=true
+
+# List of URL patterns that will be added to URL Patterns to exclude
+# Separate multiple lines with ;
+#proxy.excludes.suggested=.*\\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff)
+
+# Change the default HTTP Sampler (currently HttpClient4)
+# Java:
+#jmeter.httpsampler=HTTPSampler
+#or
+#jmeter.httpsampler=Java
+#
+# Apache HTTPClient:
+#jmeter.httpsampler=HTTPSampler2
+#or
+#jmeter.httpsampler=HttpClient3.1
+#
+# HttpClient4.x
+#jmeter.httpsampler=HttpClient4
+
+# By default JMeter tries to be more lenient with RFC2616 redirects and allows
+# relative paths.
+# If you want to test strict conformance, set this value to true
+# When the property is true, JMeter follows http://tools.ietf.org/html/rfc3986#section-5.2
+#jmeter.httpclient.strict_rfc2616=false
+
+# Default content-type include filter to use
+#proxy.content_type_include=text/html|text/plain|text/xml
+# Default content-type exclude filter to use
+#proxy.content_type_exclude=image/.*|text/css|application/.*
+
+# Default headers to remove from Header Manager elements
+# (Cookie and Authorization are always removed)
+#proxy.headers.remove=If-Modified-Since,If-None-Match,Host
+
+# Binary content-type handling
+# These content-types will be handled by saving the request in a file:
+#proxy.binary.types=application/x-amf,application/x-java-serialized-object
+# The files will be saved in this directory:
+#proxy.binary.directory=user.dir
+# The files will be created with this file filesuffix:
+#proxy.binary.filesuffix=.binary
+
+#---------------------------------------------------------------------------
+# Test Script Recorder certificate configuration
+#---------------------------------------------------------------------------
+
+#proxy.cert.directory=<JMeter bin directory>
+#proxy.cert.file=proxyserver.jks
+#proxy.cert.type=JKS
+#proxy.cert.keystorepass=password
+#proxy.cert.keypassword=password
+#proxy.cert.factory=SunX509
+# define this property if you wish to use your own keystore
+#proxy.cert.alias=<none>
+# The default validity for certificates created by JMeter
+#proxy.cert.validity=7
+# Use dynamic key generation (if supported by JMeter/JVM)
+# If false, will revert to using a single key with no certificate
+#proxy.cert.dynamic_keys=true
+
+#---------------------------------------------------------------------------
+# Test Script Recorder miscellaneous configuration
+#---------------------------------------------------------------------------
+
+# Whether to attempt disabling of samples that resulted from redirects
+# where the generated samples use auto-redirection
+#proxy.redirect.disabling=true
+
+# SSL configuration
+#proxy.ssl.protocol=TLS
+
+#---------------------------------------------------------------------------
+# JMeter Proxy configuration
+#---------------------------------------------------------------------------
+# use command-line flags for user-name and password
+#http.proxyDomain=NTLM domain, if required by HTTPClient sampler
+
+#---------------------------------------------------------------------------
+# HTTPSampleResponse Parser configuration
+#---------------------------------------------------------------------------
+
+# Space-separated list of parser groups
+HTTPResponse.parsers=htmlParser wmlParser
+# for each parser, there should be a parser.types and a parser.className property
+
+#---------------------------------------------------------------------------
+# HTML Parser configuration
+#---------------------------------------------------------------------------
+
+# Define the HTML parser to be used.
+# Default parser:
+# This new parser (since 2.10) should perform better than all others
+# see https://issues.apache.org/bugzilla/show_bug.cgi?id=55632
+#htmlParser.className=org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+
+# Other parsers:
+# Default parser before 2.10
+#htmlParser.className=org.apache.jmeter.protocol.http.parser.HtmlParserHTMLParser
+#htmlParser.className=org.apache.jmeter.protocol.http.parser.JTidyHTMLParser
+# Note that Regexp extractor may detect references that have been commented out.
+# In many cases it will work OK, but you should be aware that it may generate 
+# additional references.
+#htmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+# This parser is based on JSoup, it should be the most accurate but less performant
+# than LagartoBasedHtmlParser
+#htmlParser.className=org.apache.jmeter.protocol.http.parser.JsoupBasedHtmlParser
+
+#Used by HTTPSamplerBase to associate htmlParser with content types below 
+htmlParser.types=text/html application/xhtml+xml application/xml text/xml
+
+#---------------------------------------------------------------------------
+# WML Parser configuration
+#---------------------------------------------------------------------------
+
+wmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+
+#Used by HTTPSamplerBase to associate wmlParser with content types below 
+wmlParser.types=text/vnd.wap.wml 
+
+#---------------------------------------------------------------------------
+# Remote batching configuration
+#---------------------------------------------------------------------------
+# How is Sample sender implementations configured:
+# - true (default) means client configuration will be used
+# - false means server configuration will be used
+#sample_sender_client_configured=true
+
+# Remote batching support
+# Since JMeter 2.9, default is MODE_STRIPPED_BATCH, which returns samples in
+# batch mode (every 100 samples or every minute by default)
+# Note also that MODE_STRIPPED_BATCH strips response data from SampleResult, so if you need it change to
+# another mode
+# Hold retains samples until end of test (may need lots of memory)
+# Batch returns samples in batches
+# Statistical returns sample summary statistics
+# hold_samples was originally defined as a separate property,
+# but can now also be defined using mode=Hold
+# mode can also be the class name of an implementation of org.apache.jmeter.samplers.SampleSender
+#mode=Standard
+#mode=Batch
+#mode=Hold
+#mode=Statistical
+#Set to true to key statistical samples on threadName rather than threadGroup
+#key_on_threadname=false
+#mode=Stripped
+#mode=StrippedBatch
+#mode=org.example.load.MySampleSender
+#
+#num_sample_threshold=100
+# Value is in milliseconds
+#time_threshold=60000
+#
+# Asynchronous sender; uses a queue and background worker process to return the samples
+#mode=Asynch
+# default queue size
+#asynch.batch.queue.size=100
+# Same as Asynch but strips response data from SampleResult
+#mode=StrippedAsynch
+#
+# DiskStore: as for Hold mode, but serialises the samples to disk, rather than saving in memory
+#mode=DiskStore
+# Same as DiskStore but strips response data from SampleResult
+#mode=StrippedDiskStore
+# Note: the mode is currently resolved on the client; 
+# other properties (e.g. time_threshold) are resolved on the server.
+
+# To set the Monitor Health Visualiser buffer size, enter the desired value
+# monitor.buffer.size=800
+
+#---------------------------------------------------------------------------
+# JDBC Request configuration
+#---------------------------------------------------------------------------
+
+# Max number of PreparedStatements per Connection for PreparedStatement cache
+#jdbcsampler.maxopenpreparedstatements=100
+
+# String used to indicate a null value
+#jdbcsampler.nullmarker=]NULL[
+
+#---------------------------------------------------------------------------
+# OS Process Sampler configuration
+#---------------------------------------------------------------------------
+# Polling to see if process has finished its work, used when a timeout is configured on sampler
+#os_sampler.poll_for_timeout=100
+
+#---------------------------------------------------------------------------
+# TCP Sampler configuration
+#---------------------------------------------------------------------------
+
+# The default handler class
+#tcp.handler=TCPClientImpl
+#
+# eolByte = byte value for end of line
+# set this to a value outside the range -128 to +127 to skip eol checking
+#tcp.eolByte=1000
+#
+# TCP Charset, used by org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl
+# default to Platform defaults charset as returned by Charset.defaultCharset().name()
+#tcp.charset=
+#
+# status.prefix and suffix = strings that enclose the status response code
+#tcp.status.prefix=Status=
+#tcp.status.suffix=.
+#
+# status.properties = property file to convert codes to messages
+#tcp.status.properties=mytestfiles/tcpstatus.properties
+
+# The length prefix used by LengthPrefixedBinaryTCPClientImpl implementation
+# defaults to 2 bytes.
+#tcp.binarylength.prefix.length=2
+
+#---------------------------------------------------------------------------
+# Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode)
+#---------------------------------------------------------------------------
+#
+# Define the following property to automatically start a summariser with that name
+# (applies to non-GUI mode only)
+#summariser.name=summary
+#
+# interval between summaries (in seconds) default 30 seconds
+#summariser.interval=30
+#
+# Write messages to log file
+#summariser.log=true
+#
+# Write messages to System.out
+#summariser.out=true
+
+
+#---------------------------------------------------------------------------
+# Aggregate Report and Aggregate Graph - configuration
+#---------------------------------------------------------------------------
+#
+# Percentiles to display in reports
+# Can be float value between 0 and 100
+# First percentile to display, defaults to 90%
+#aggregate_rpt_pct1=90
+# Second percentile to display, defaults to 95%
+#aggregate_rpt_pct2=95
+# Second percentile to display, defaults to 99%
+#aggregate_rpt_pct3=99
+
+#---------------------------------------------------------------------------
+# Aggregate Report and Aggregate Graph - configuration
+#---------------------------------------------------------------------------
+#
+# Backend metrics sliding window size for Percentiles, Min, Max
+#backend_metrics_window=100
+
+#---------------------------------------------------------------------------
+# BeanShell configuration
+#---------------------------------------------------------------------------
+
+# BeanShell Server properties
+#
+# Define the port number as non-zero to start the http server on that port
+#beanshell.server.port=9000
+# The telnet server will be started on the next port
+
+#
+# Define the server initialisation file
+beanshell.server.file=../extras/startup.bsh
+
+#
+# Define a file to be processed at startup
+# This is processed using its own interpreter.
+#beanshell.init.file=
+
+#
+# Define the intialisation files for BeanShell Sampler, Function and other BeanShell elements
+# N.B. Beanshell test elements do not share interpreters.
+#      Each element in each thread has its own interpreter.
+#      This is retained between samples.
+#beanshell.sampler.init=BeanShellSampler.bshrc
+#beanshell.function.init=BeanShellFunction.bshrc
+#beanshell.assertion.init=BeanShellAssertion.bshrc
+#beanshell.listener.init=etc
+#beanshell.postprocessor.init=etc
+#beanshell.preprocessor.init=etc
+#beanshell.timer.init=etc
+
+# The file BeanShellListeners.bshrc contains sample definitions
+# of Test and Thread Listeners.
+
+#---------------------------------------------------------------------------
+# MailerModel configuration
+#---------------------------------------------------------------------------
+
+# Number of successful samples before a message is sent
+#mailer.successlimit=2
+#
+# Number of failed samples before a message is sent
+#mailer.failurelimit=2
+
+#---------------------------------------------------------------------------
+# CSVRead configuration
+#---------------------------------------------------------------------------
+
+# CSVRead delimiter setting (default ",")
+# Make sure that there are no trailing spaces or tabs after the delimiter
+# characters, or these will be included in the list of valid delimiters
+#csvread.delimiter=,
+#csvread.delimiter=;
+#csvread.delimiter=!
+#csvread.delimiter=~
+# The following line has a tab after the =
+#csvread.delimiter=	
+
+#---------------------------------------------------------------------------
+# __time() function configuration
+#
+# The properties below can be used to redefine the default formats
+#---------------------------------------------------------------------------
+#time.YMD=yyyyMMdd
+#time.HMS=HHmmss
+#time.YMDHMS=yyyyMMdd-HHmmss
+#time.USER1=
+#time.USER2=
+
+#---------------------------------------------------------------------------
+# CSV DataSet configuration
+#---------------------------------------------------------------------------
+
+# String to return at EOF (if recycle not used)
+#csvdataset.eofstring=<EOF>
+
+#---------------------------------------------------------------------------
+# LDAP Sampler configuration
+#---------------------------------------------------------------------------
+# Maximum number of search results returned by a search that will be sorted
+# to guarantee a stable ordering (if more results then this limit are retruned
+# then no sorting is done). Set to 0 to turn off all sorting, in which case
+# "Equals" response assertions will be very likely to fail against search results.
+#
+#ldapsampler.max_sorted_results=1000
+ 
+# Number of characters to log for each of three sections (starting matching section, diff section,
+#   ending matching section where not all sections will appear for all diffs) diff display when an Equals
+#   assertion fails. So a value of 100 means a maximum of 300 characters of diff text will be displayed
+#   (+ a number of extra characters like "..." and "[[["/"]]]" which are used to decorate it).
+#assertion.equals_section_diff_len=100
+# test written out to log to signify start/end of diff delta
+#assertion.equals_diff_delta_start=[[[
+#assertion.equals_diff_delta_end=]]]
+
+#---------------------------------------------------------------------------
+# Miscellaneous configuration
+#---------------------------------------------------------------------------
+
+# If defined, then start the mirror server on the port
+#mirror.server.port=8081
+
+# ORO PatternCacheLRU size
+#oro.patterncache.size=1000
+
+#TestBeanGui
+#
+#propertyEditorSearchPath=null
+
+# Turn expert mode on/off: expert mode will show expert-mode beans and properties
+#jmeter.expertMode=true
+
+# Maximum redirects to follow in a single sequence (default 5)
+#httpsampler.max_redirects=5
+# Maximum frame/iframe nesting depth (default 5)
+#httpsampler.max_frame_depth=5
+# Maximum await termination timeout (secs) when concurrent download embedded resources (default 60)
+#httpsampler.await_termination_timeout=60
+# Revert to BUG 51939 behaviour (no separate container for embedded resources) by setting the following false:
+#httpsampler.separate.container=true
+
+# If embedded resources download fails due to missing resources or other reasons, if this property is true
+# Parent sample will not be marked as failed 
+#httpsampler.ignore_failed_embedded_resources=false
+
+# The encoding to be used if none is provided (default ISO-8859-1)
+#sampleresult.default.encoding=ISO-8859-1
+
+# Network response size calculation method
+# Use real size: number of bytes for response body return by webserver
+# (i.e. the network bytes received for response)
+# if set to false, the (uncompressed) response data size will used (default before 2.5)
+# Include headers: add the headers size in real size
+#sampleresult.getbytes.body_real_size=true
+#sampleresult.getbytes.headers_size=true
+
+# CookieManager behaviour - should cookies with null/empty values be deleted?
+# Default is true. Use false to revert to original behaviour
+#CookieManager.delete_null_cookies=true
+
+# CookieManager behaviour - should variable cookies be allowed?
+# Default is true. Use false to revert to original behaviour
+#CookieManager.allow_variable_cookies=true
+
+# CookieManager behaviour - should Cookies be stored as variables?
+# Default is false
+#CookieManager.save.cookies=false
+
+# CookieManager behaviour - prefix to add to cookie name before storing it as a variable
+# Default is COOKIE_; to remove the prefix, define it as one or more spaces
+#CookieManager.name.prefix=
+ 
+# CookieManager behaviour - check received cookies are valid before storing them?
+# Default is true. Use false to revert to previous behaviour
+#CookieManager.check.cookies=true
+
+# (2.0.3) JMeterThread behaviour has been changed to set the started flag before
+# the controllers are initialised. This is so controllers can access variables earlier. 
+# In case this causes problems, the previous behaviour can be restored by uncommenting
+# the following line.
+#jmeterthread.startearlier=false
+
+# (2.2.1) JMeterThread behaviour has changed so that PostProcessors are run in forward order
+# (as they appear in the test plan) rather than reverse order as previously.
+# Uncomment the following line to revert to the original behaviour
+#jmeterthread.reversePostProcessors=true
+
+# (2.2) StandardJMeterEngine behaviour has been changed to notify the listeners after
+# the running version is enabled. This is so they can access variables. 
+# In case this causes problems, the previous behaviour can be restored by uncommenting
+# the following line.
+#jmeterengine.startlistenerslater=false
+
+# Number of milliseconds to wait for a thread to stop
+#jmeterengine.threadstop.wait=5000
+
+#Whether to invoke System.exit(0) in server exit code after stopping RMI
+#jmeterengine.remote.system.exit=false
+
+# Whether to call System.exit(1) on failure to stop threads in non-GUI mode.
+# This only takes effect if the test was explictly requested to stop.
+# If this is disabled, it may be necessary to kill the JVM externally
+#jmeterengine.stopfail.system.exit=true
+
+# Whether to force call System.exit(0) at end of test in non-GUI mode, even if
+# there were no failures and the test was not explicitly asked to stop.
+# Without this, the JVM may never exit if there are other threads spawned by
+# the test which never exit.
+#jmeterengine.force.system.exit=false
+
+# How long to pause (in ms) in the daemon thread before reporting that the JVM has failed to exit.
+# If the value is <= 0, the JMeter does not start the daemon thread 
+#jmeter.exit.check.pause=2000
+
+# If running non-GUI, then JMeter listens on the following port for a shutdown message.
+# To disable, set the port to 1000 or less.
+#jmeterengine.nongui.port=4445
+#
+# If the initial port is busy, keep trying until this port is reached
+# (to disable searching, set the value less than or equal to the .port property)
+#jmeterengine.nongui.maxport=4455
+
+# How often to check for shutdown during ramp-up (milliseconds)
+#jmeterthread.rampup.granularity=1000
+
+#Should JMeter expand the tree when loading a test plan?
+# default value is false since JMeter 2.7
+#onload.expandtree=false
+
+#JSyntaxTextArea configuration
+#jsyntaxtextarea.wrapstyleword=true
+#jsyntaxtextarea.linewrap=true
+#jsyntaxtextarea.codefolding=true
+# Set 0 to disable undo feature in JSyntaxTextArea
+#jsyntaxtextarea.maxundos=50
+
+# Set this to false to disable the use of JSyntaxTextArea for the Console Logger panel 
+#loggerpanel.usejsyntaxtext=true
+
+# Maximum size of HTML page that can be displayed; default=200 * 1024
+# Set to 0 to disable the size check and display the whole response
+#view.results.tree.max_size=204800
+
+# Order of Renderers in View Results Tree
+# Note full class names should be used for non jmeter core renderers
+# For JMeter core renderers, class names start with . and are automatically
+# prefixed with org.apache.jmeter.visualizers
+view.results.tree.renderers_order=.RenderAsText,.RenderAsRegexp,.RenderAsCssJQuery,.RenderAsXPath,.RenderAsHTML,.RenderAsHTMLWithEmbedded,.RenderAsDocument,.RenderAsJSON,.RenderAsXML
+
+# Maximum size of Document that can be parsed by Tika engine; defaut=10 * 1024 * 1024 (10MB)
+# Set to 0 to disable the size check
+#document.max_size=0
+
+#JMS options
+# Enable the following property to stop JMS Point-to-Point Sampler from using
+# the properties java.naming.security.[principal|credentials] when creating the queue connection
+#JMSSampler.useSecurity.properties=false
+
+# Set the following value to true in order to skip the delete confirmation dialogue
+#confirm.delete.skip=false
+
+# Used by Webservice Sampler (SOAP)
+# Size of Document Cache
+#soap.document_cache=50
+
+# Used by JSR223 elements
+# Size of compiled scripts cache
+#jsr223.compiled_scripts_cache_size=100
+
+#---------------------------------------------------------------------------
+# Classpath configuration
+#---------------------------------------------------------------------------
+
+# List of paths (separated by ;) to search for additional JMeter plugin classes,
+# for example new GUI elements and samplers.
+# A path item can either be a jar file or a directory.
+# Any jar file in such a directory will be automatically included,
+# jar files in sub directories are ignored.
+# The given value is in addition to any jars found in the lib/ext directory.
+# Do not use this for utility or plugin dependency jars.
+#search_paths=/app1/lib;/app2/lib
+
+# List of paths that JMeter will search for utility and plugin dependency classes.
+# Use your platform path separator to separate multiple paths.
+# A path item can either be a jar file or a directory.
+# Any jar file in such a directory will be automatically included,
+# jar files in sub directories are ignored.
+# The given value is in addition to any jars found in the lib directory.
+# All entries will be added to the class path of the system class loader
+# and also to the path of the JMeter internal loader.
+# Paths with spaces may cause problems for the JVM
+#user.classpath=../classes;../lib;../app1/jar1.jar;../app2/jar2.jar
+
+# List of paths (separated by ;) that JMeter will search for utility
+# and plugin dependency classes.
+# A path item can either be a jar file or a directory.
+# Any jar file in such a directory will be automatically included,
+# jar files in sub directories are ignored.
+# The given value is in addition to any jars found in the lib directory
+# or given by the user.classpath property.
+# All entries will be added to the path of the JMeter internal loader only.
+# For plugin dependencies using plugin_dependency_paths should be preferred over
+# user.classpath.
+#plugin_dependency_paths=../dependencies/lib;../app1/jar1.jar;../app2/jar2.jar
+
+# Classpath finder
+# ================
+# The classpath finder currently needs to load every single JMeter class to find
+# the classes it needs.
+# For non-GUI mode, it's only necessary to scan for Function classes, but all classes
+# are still loaded.
+# All current Function classes include ".function." in their name,
+# and none include ".gui." in the name, so the number of unwanted classes loaded can be
+# reduced by checking for these. However, if a valid function class name does not match
+# these restrictions, it will not be loaded. If problems are encountered, then comment
+# or change the following properties:
+classfinder.functions.contain=.functions.
+classfinder.functions.notContain=.gui.
+
+#---------------------------------------------------------------------------
+# Additional property files to load
+#---------------------------------------------------------------------------
+
+# Should JMeter automatically load additional JMeter properties?
+# File name to look for (comment to disable)
+#user.properties=user.properties
+
+# Should JMeter automatically load additional system properties?
+# File name to look for (comment to disable)
+#system.properties=system.properties
+
+# Comma separated list of files that contain reference to templates and their description
+# Path must be relative to jmeter root folder
+#template.files=/bin/templates/templates.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


Mime
View raw message