adaptive-caching-framework
Changes
evaluation/applications/AP/CloudStore/src/main/java/eu/cloudscale/showcase/Configuration.java 35(+23 -12)
evaluation/applications/AP/shopizer/sm-core/src/main/resources/spring/shopizer-core-rules.xml 82(+41 -41)
evaluation/applications/AP/shopizer/sm-core-model/src/main/java/com/salesmanager/core/business/generic/model/SalesManagerEntity.java 3(+1 -2)
evaluation/applications/AP/shopizer/sm-shop/src/main/java/com/salesmanager/web/Configuration.java 37(+23 -14)
evaluation/workloads/adaptive/cloudstore.jmx 4427(+4427 -0)
evaluation/workloads/adaptive/petclinic.jmx 2306(+2306 -0)
evaluation/workloads/adaptive/shopizer.jmx 13646(+13646 -0)
evaluation/workloads/adaptive/workload.txt 20(+20 -0)
Details
diff --git a/evaluation/applications/AP/CloudStore/pom.xml b/evaluation/applications/AP/CloudStore/pom.xml
index 40730f8..d1d0599 100644
--- a/evaluation/applications/AP/CloudStore/pom.xml
+++ b/evaluation/applications/AP/CloudStore/pom.xml
@@ -183,9 +183,9 @@
<!--TODO Jhonny: added adaptive caching-->
<dependency>
- <groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
- <artifactId>autonomicmanager</artifactId>
- <version>0.7.0-SNAPSHOT</version>
+ <groupId>br.ufrgs.inf.prosoft</groupId>
+ <artifactId>aplcache</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
@@ -386,8 +386,8 @@
<verbose>false</verbose>
<aspectLibraries>
<aspectLibrary>
- <groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
- <artifactId>autonomicmanager</artifactId>
+ <groupId>br.ufrgs.inf.prosoft</groupId>
+ <artifactId>tigris</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
@@ -396,7 +396,6 @@
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
- <goal>test-compile</goal>
</goals>
</execution>
</executions>
diff --git a/evaluation/applications/AP/CloudStore/src/main/java/eu/cloudscale/showcase/Configuration.java b/evaluation/applications/AP/CloudStore/src/main/java/eu/cloudscale/showcase/Configuration.java
index cb4b7e8..c328ccc 100644
--- a/evaluation/applications/AP/CloudStore/src/main/java/eu/cloudscale/showcase/Configuration.java
+++ b/evaluation/applications/AP/CloudStore/src/main/java/eu/cloudscale/showcase/Configuration.java
@@ -1,19 +1,30 @@
package eu.cloudscale.showcase;
+
import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.AdaptiveCaching;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.ComponentScan;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.CacheProviderType;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.Modelling;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.RepositoryType;
-import br.ufrgs.inf.prosoft.tigris.annotations.TigrisConfiguration;
+import br.ufrgs.inf.prosoft.adaptivecaching.configuration.types.CacheProviderType;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.ComponentScan;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.Metrics;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.TigrisConfiguration;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.TigrisCriteria;
+import br.ufrgs.inf.prosoft.tigris.configuration.types.Modelling;
+import br.ufrgs.inf.prosoft.tigris.configuration.types.RepositoryType;
+import br.ufrgs.inf.prosoft.tigris.sampling.GranularityType;
-@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE, logRepository = RepositoryType.MEMORY,
- modelling = Modelling.FULLEXPLORATION, analyzerEnabled = true, enabled = true, disableMonitoringAfterAnalysis = false,
- clearMonitoringDataOnStart = true, traceAsync = false, tracerEnabled = true, analyzeOnce = true, expiryInterval = 86400)
-@ComponentScan(allowed = "eu.cloudscale.showcase", denied = {"eu.cloudscale.showcase.db.model", "eu.cloudscale.showcase.servlets", "eu.cloudscale.showcase.db.dao.hibernate"})
@TigrisConfiguration(
- samplingEnabled = true,
- samplingPercentage = 5,
- staticMetricFile = "/home/jhonnymertz/workspace/adaptive-caching-framework/understand/cloudstore.csv")
+ logRepository = RepositoryType.MEMORY,
+ staticMetricFile = "cloudstore.csv",
+ samplingPercentage = 0.5)
+@TigrisCriteria(
+ criteria = "more frequent '∪' more expensive",
+ granularity = GranularityType.METHOD,
+ frequencyMetric = Metrics.INVOCATION_FREQUENCY,
+ expensivenessMetric = Metrics.EXECUTION_TIME,
+ changeabilityMetric = Metrics.COMPUTATION_PATTERN
+)
+@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE,
+ modelling = Modelling.FULLEXPLORATION, disableMonitoringAfterAnalysis = false,
+ analyzeOnce = true, expiryInterval = 60)
+@ComponentScan(allowed = "eu.cloudscale.showcase.*", denied = "(eu.cloudscale.showcase.db.model.*|eu.cloudscale.showcase.servlets.*)")
public class Configuration {
}
diff --git a/evaluation/applications/AP/CloudStore/src/main/resources/log4j.properties b/evaluation/applications/AP/CloudStore/src/main/resources/log4j.properties
index 21d09a8..76bba96 100755
--- a/evaluation/applications/AP/CloudStore/src/main/resources/log4j.properties
+++ b/evaluation/applications/AP/CloudStore/src/main/resources/log4j.properties
@@ -1,4 +1,4 @@
-log4j.rootCategory=ERROR, stdout
+log4j.rootCategory=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n
diff --git a/evaluation/applications/AP/shopizer/sm-core/pom.xml b/evaluation/applications/AP/shopizer/sm-core/pom.xml
index 364b5d9..7f631ca 100755
--- a/evaluation/applications/AP/shopizer/sm-core/pom.xml
+++ b/evaluation/applications/AP/shopizer/sm-core/pom.xml
@@ -510,10 +510,10 @@
-->
<plugins>
- <!--
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
+ <version>2.0.5</version>
<executions>
<execution>
<goals>
@@ -525,6 +525,7 @@
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
+ <version>1.0.4</version>
<executions>
<execution>
<goals>
@@ -537,7 +538,6 @@
</execution>
</executions>
</plugin>
- -->
</plugins>
<pluginManagement>
<plugins>
diff --git a/evaluation/applications/AP/shopizer/sm-core/src/main/resources/spring/shopizer-core-rules.xml b/evaluation/applications/AP/shopizer/sm-core/src/main/resources/spring/shopizer-core-rules.xml
index c7b05a6..8d168bf 100755
--- a/evaluation/applications/AP/shopizer/sm-core/src/main/resources/spring/shopizer-core-rules.xml
+++ b/evaluation/applications/AP/shopizer/sm-core/src/main/resources/spring/shopizer-core-rules.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:drools="http://drools.org/schema/drools-spring"
- xmlns:util="http://www.springframework.org/schema/util"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
-
- <!-- Decision table for the the selection of a shipping shipping method -->
- <!-- from shopizer-shipping-decision-table-module -->
- <drools:kbase id="shippingMethodDecisionBase">
- <drools:resources>
- <drools:resource type="DTABLE" source="classpath:rules/shipping-custom-rules.xls"/>
- </drools:resources>
- </drools:kbase>
-
- <drools:ksession id="shippingMethodDecision" name="shippingMethodDecision" type="stateless" kbase="shippingMethodDecisionBase"/>
-
- <!-- concrete module for the above kbase -->
- <bean id="shippingMethodDecisionProcess" class="com.salesmanager.core.modules.integration.shipping.impl.ShippingDecisionPreProcessorImpl">
- <property name="shippingMethodDecision" ref="shippingMethodDecision" />
- <property name="kbase" ref="shippingMethodDecisionBase" />
- </bean>
-
- <!-- Basic custom shipping rules -->
- <drools:kbase id="shippingPriceDecisionBase">
- <drools:resources>
- <drools:resource type="DTABLE" source="classpath:rules/shipping-decision-rules.xls"/>
- </drools:resources>
- </drools:kbase>
-
- <drools:ksession id="shippingPriceRule" name="shippingPriceRule" type="stateless" kbase="shippingPriceDecisionBase"/>
-
- <!-- concrete module for the above kbase -->
- <bean id="customShippingPriceModule" class="com.salesmanager.core.modules.integration.shipping.impl.CustomShippingQuoteRules">
- <property name="shippingPriceRule" ref="shippingPriceRule" />
- <property name="kbase" ref="shippingPriceDecisionBase" />
- </bean>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:drools="http://drools.org/schema/drools-spring"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
+ http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
+
+ <!-- Decision table for the the selection of a shipping shipping method -->
+ <!-- from shopizer-shipping-decision-table-module -->
+ <drools:kbase id="shippingMethodDecisionBase">
+ <drools:resources>
+ <drools:resource type="DTABLE" source="classpath:rules/shipping-custom-rules.xls"/>
+ </drools:resources>
+ </drools:kbase>
+
+ <drools:ksession id="shippingMethodDecision" name="shippingMethodDecision" type="stateless" kbase="shippingMethodDecisionBase"/>
+
+ <!-- concrete module for the above kbase -->
+ <bean id="shippingMethodDecisionProcess" class="com.salesmanager.core.modules.integration.shipping.impl.ShippingDecisionPreProcessorImpl">
+ <property name="shippingMethodDecision" ref="shippingMethodDecision" />
+ <property name="kbase" ref="shippingMethodDecisionBase" />
+ </bean>
+
+ <!-- Basic custom shipping rules -->
+ <drools:kbase id="shippingPriceDecisionBase">
+ <drools:resources>
+ <drools:resource type="DTABLE" source="classpath:rules/shipping-decision-rules.xls"/>
+ </drools:resources>
+ </drools:kbase>
+
+ <drools:ksession id="shippingPriceRule" name="shippingPriceRule" type="stateless" kbase="shippingPriceDecisionBase"/>
+
+ <!-- concrete module for the above kbase -->
+ <bean id="customShippingPriceModule" class="com.salesmanager.core.modules.integration.shipping.impl.CustomShippingQuoteRules">
+ <property name="shippingPriceRule" ref="shippingPriceRule" />
+ <property name="kbase" ref="shippingPriceDecisionBase" />
+ </bean>
+
</beans>
\ No newline at end of file
diff --git a/evaluation/applications/AP/shopizer/sm-core-model/pom.xml b/evaluation/applications/AP/shopizer/sm-core-model/pom.xml
index 8b9e622..327b92b 100755
--- a/evaluation/applications/AP/shopizer/sm-core-model/pom.xml
+++ b/evaluation/applications/AP/shopizer/sm-core-model/pom.xml
@@ -342,6 +342,7 @@
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
+ <version>2.0.5</version>
<executions>
<execution>
<goals>
@@ -353,6 +354,7 @@
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
+ <version>1.0.4</version>
<executions>
<execution>
<goals>
@@ -431,6 +433,7 @@
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
+ <version>2.0.4</version>
<executions>
<execution>
<id>process</id>
diff --git a/evaluation/applications/AP/shopizer/sm-core-model/src/main/java/com/salesmanager/core/business/generic/model/SalesManagerEntity.java b/evaluation/applications/AP/shopizer/sm-core-model/src/main/java/com/salesmanager/core/business/generic/model/SalesManagerEntity.java
index 5c8662c..45dc82d 100755
--- a/evaluation/applications/AP/shopizer/sm-core-model/src/main/java/com/salesmanager/core/business/generic/model/SalesManagerEntity.java
+++ b/evaluation/applications/AP/shopizer/sm-core-model/src/main/java/com/salesmanager/core/business/generic/model/SalesManagerEntity.java
@@ -12,8 +12,7 @@ import org.hibernate.Hibernate;
*
* @param <E> type de l'entité
*/
-public abstract class SalesManagerEntity<K extends Serializable & Comparable<K>, E extends SalesManagerEntity<K, ?>>
- implements Serializable, Comparable<E> {
+public abstract class SalesManagerEntity<K extends Comparable<K>, E extends SalesManagerEntity<K, ?>> implements Serializable, Comparable<E> {
private static final long serialVersionUID = -3988499137919577054L;
diff --git a/evaluation/applications/AP/shopizer/sm-shop/pom.xml b/evaluation/applications/AP/shopizer/sm-shop/pom.xml
index dd50189..cdc4b2a 100755
--- a/evaluation/applications/AP/shopizer/sm-shop/pom.xml
+++ b/evaluation/applications/AP/shopizer/sm-shop/pom.xml
@@ -357,11 +357,11 @@
<version>0.0.7</version>
</dependency>
- <!--<new dependencies>-->
+ <!--TODO Jhonny: added adaptive caching-->
<dependency>
- <groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
- <artifactId>autonomicmanager</artifactId>
- <version>0.7.0-SNAPSHOT</version>
+ <groupId>br.ufrgs.inf.prosoft</groupId>
+ <artifactId>aplcache</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
</dependency>
<dependency>
@@ -497,6 +497,7 @@
</executions>
</plugin>
+ <!--TODO Jhonny: added adaptive caching-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
@@ -511,8 +512,8 @@
<verbose>false</verbose>
<aspectLibraries>
<aspectLibrary>
- <groupId>br.ufrgs.inf.prosoft.adaptivecaching</groupId>
- <artifactId>autonomicmanager</artifactId>
+ <groupId>br.ufrgs.inf.prosoft</groupId>
+ <artifactId>tigris</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
@@ -521,7 +522,6 @@
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
- <goal>test-compile</goal>
</goals>
</execution>
</executions>
@@ -529,7 +529,7 @@
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
- <version>${org.aspectj-version}</version>
+ <version>1.8.9</version>
</dependency>
</dependencies>
</plugin>
diff --git a/evaluation/applications/AP/shopizer/sm-shop/src/main/java/com/salesmanager/web/Configuration.java b/evaluation/applications/AP/shopizer/sm-shop/src/main/java/com/salesmanager/web/Configuration.java
index 67acd70..fc45e3e 100644
--- a/evaluation/applications/AP/shopizer/sm-shop/src/main/java/com/salesmanager/web/Configuration.java
+++ b/evaluation/applications/AP/shopizer/sm-shop/src/main/java/com/salesmanager/web/Configuration.java
@@ -1,21 +1,30 @@
package com.salesmanager.web;
+
import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.AdaptiveCaching;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.ComponentScan;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.CacheProviderType;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.Modelling;
-import br.ufrgs.inf.prosoft.adaptivecaching.configuration.annotation.types.RepositoryType;
-import br.ufrgs.inf.prosoft.tigris.annotations.TigrisConfiguration;
+import br.ufrgs.inf.prosoft.adaptivecaching.configuration.types.CacheProviderType;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.ComponentScan;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.Metrics;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.TigrisConfiguration;
+import br.ufrgs.inf.prosoft.tigris.configuration.annotation.TigrisCriteria;
+import br.ufrgs.inf.prosoft.tigris.configuration.types.Modelling;
+import br.ufrgs.inf.prosoft.tigris.configuration.types.RepositoryType;
+import br.ufrgs.inf.prosoft.tigris.sampling.GranularityType;
-@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE, logRepository = RepositoryType.MEMORY,
- modelling = Modelling.FULLEXPLORATION, analyzerEnabled = true, enabled = true, disableMonitoringAfterAnalysis = true, traceAsync = false, tracerEnabled = true, analyzeOnce = true)
-@ComponentScan(allowed = "com.salesmanager", denied = {"model", "com.salesmanager.web.entity", "com.salesmanager.web.populator",
- "com.salesmanager.web.utils.BreadcrumbsUtils.buildProductBreadcrumb",
- "com.salesmanager.web.utils.BreadcrumbsUtils.buildCategoryBreadcrumb",
- "com.salesmanager.web.filter.AdminFilter"})
@TigrisConfiguration(
- samplingEnabled = true,
- samplingPercentage = 100,
- staticMetricFile = "/home/jhonnymertz/workspace/adaptive-caching-framework/understand/shopizer.csv")
+ logRepository = RepositoryType.MEMORY,
+ staticMetricFile = "cloudstore.csv",
+ samplingPercentage = 0.5)
+@TigrisCriteria(
+ criteria = "more frequent '∪' more expensive",
+ granularity = GranularityType.METHOD,
+ frequencyMetric = Metrics.INVOCATION_FREQUENCY,
+ expensivenessMetric = Metrics.EXECUTION_TIME,
+ changeabilityMetric = Metrics.COMPUTATION_PATTERN
+)
+@AdaptiveCaching(cacheProvider = CacheProviderType.EHCACHE,
+ modelling = Modelling.FULLEXPLORATION, disableMonitoringAfterAnalysis = false,
+ analyzeOnce = true, expiryInterval = 60)
+@ComponentScan(allowed = "com.salesmanager.*", denied = "(.*model.*|com.salesmanager.web.entity.*|com.salesmanager.web.populator.*|com.salesmanager.web.utils.BreadcrumbsUtils.buildProductBreadcrumb.*|com.salesmanager.web.utils.BreadcrumbsUtils.buildCategoryBreadcrumb.*|com.salesmanager.web.filter.AdminFilter.*)")
public class Configuration {
}
evaluation/workloads/adaptive/cloudstore.jmx 4427(+4427 -0)
diff --git a/evaluation/workloads/adaptive/cloudstore.jmx b/evaluation/workloads/adaptive/cloudstore.jmx
new file mode 100644
index 0000000..8e6beaf
--- /dev/null
+++ b/evaluation/workloads/adaptive/cloudstore.jmx
@@ -0,0 +1,4427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3">
+ <hashTree>
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="CloudScale Sustain" enabled="true">
+ <stringProp name="TestPlan.comments">got from </stringProp>
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
+ <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="WORKLOAD_FILE" elementType="Argument">
+ <stringProp name="Argument.name">WORKLOAD_FILE</stringProp>
+ <stringProp name="Argument.value">C:\Users\mertz\Documents\workspace\phd\adaptive-monitoring-framework\evaluation\workloads\workload.txt</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="TestPlan.user_define_classpath"></stringProp>
+ </TestPlan>
+ <hashTree>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - COMMON" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="NUM_ITEMS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_ITEMS</stringProp>
+ <stringProp name="Argument.value">10000</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_EBS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_EBS</stringProp>
+ <stringProp name="Argument.value">100</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="HOST" elementType="Argument">
+ <stringProp name="Argument.name">HOST</stringProp>
+ <stringProp name="Argument.value">localhost</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">${__P(host)}</stringProp>
+ </elementProp>
+ <elementProp name="PORT" elementType="Argument">
+ <stringProp name="Argument.name">PORT</stringProp>
+ <stringProp name="Argument.value">8080</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">${__P(remote_port)}</stringProp>
+ </elementProp>
+ <elementProp name="SHOWCASE" elementType="Argument">
+ <stringProp name="Argument.name">SHOWCASE</stringProp>
+ <stringProp name="Argument.value">/showcase</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="Argument">
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">The value is set during scenario execution!</stringProp>
+ </elementProp>
+ <elementProp name="ITEM_ID" elementType="Argument">
+ <stringProp name="Argument.name">ITEM_ID</stringProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.desc">The value is set during scenario execution!</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="SWITCH_ID" elementType="Argument">
+ <stringProp name="Argument.name">SWITCH_ID</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.desc">The value will change during scenarion exectution. Don't change initial value!</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="COUNTER" elementType="Argument">
+ <stringProp name="Argument.name">COUNTER</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="STARTUP_THREADS" elementType="Argument">
+ <stringProp name="Argument.name">STARTUP_THREADS</stringProp>
+ <stringProp name="Argument.value">${__P(startup_threads)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="REST_THREADS" elementType="Argument">
+ <stringProp name="Argument.name">REST_THREADS</stringProp>
+ <stringProp name="Argument.value">${__P(rest_threads)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_USERS_SIMULATED" elementType="Argument">
+ <stringProp name="Argument.name">NUM_USERS_SIMULATED</stringProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_LOOPS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_LOOPS</stringProp>
+ <stringProp name="Argument.value">500</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - NUM_CUSTOMERS" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="NUM_CUSTOMERS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_CUSTOMERS</stringProp>
+ <stringProp name="Argument.value">${__BeanShell(num_ebs = vars.get("NUM_EBS"); return Integer.parseInt(num_ebs) * 2880;)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - CUSTOMER_ID" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="CUSTOMER_ID" elementType="Argument">
+ <stringProp name="Argument.name">CUSTOMER_ID</stringProp>
+ <stringProp name="Argument.value">${__Random(1, ${NUM_CUSTOMERS})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <kg.apc.jmeter.threads.UltimateThreadGroup guiclass="kg.apc.jmeter.threads.UltimateThreadGroupGui" testclass="kg.apc.jmeter.threads.UltimateThreadGroup" testname="Original" enabled="false">
+ <collectionProp name="ultimatethreadgroupdata">
+ <collectionProp name="-465685905">
+ <stringProp name="-1665047411">${STARTUP_THREADS}</stringProp>
+ <stringProp name="48">0</stringProp>
+ <stringProp name="48">0</stringProp>
+ <stringProp name="1597881">4140</stringProp>
+ <stringProp name="48">0</stringProp>
+ </collectionProp>
+ <collectionProp name="2134964757">
+ <stringProp name="-1687916888">${REST_THREADS}</stringProp>
+ <stringProp name="48687">120</stringProp>
+ <stringProp name="52593">540</stringProp>
+ <stringProp name="1571097">3480</stringProp>
+ <stringProp name="0"></stringProp>
+ </collectionProp>
+ </collectionProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <intProp name="LoopController.loops">-1</intProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ </kg.apc.jmeter.threads.UltimateThreadGroup>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability2" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 1100, // new-products
+ 75, //buy
+ 69, // buy-confirm
+ 25, // order-display
+ 9, // admin confirm
+ 10, // admin request
+ 30, // order-inquiry
+ 82, //customer-registration
+ 125, // shopping-cart
+ 1100, // best-sellers
+ 1100, // search-result
+ 1200, // search-request
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] buy-confirm" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] ccTypes = {
+ "Visa",
+ "MasterCard",
+ "Discover",
+ "Amex",
+ "Diners"
+};
+
+String[] shippingTypes = {
+ "AIR",
+ "UPS",
+ "FEDEX",
+ "SHIP",
+ "COURIER",
+ "MAIL"
+};
+
+int min = 0;
+int max = ccTypes.length -1;
+
+ccType = ccTypes[rand.nextInt((max - min) + 1) + min];
+
+max = shippingTypes.length-1;
+
+shipping = shippingTypes[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_CC_TYPE", ccType);
+vars.put("RAND_SHIPPING", shipping);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {
+ "ARTS",
+ "BIOGRAPHIES",
+ "BUSINESS",
+ "CHILDREN",
+ "COMPUTERS",
+ "COOKING",
+ "HEALTH",
+ "HISTORY",
+ "HOME",
+ "HUMOR",
+ "LITERATURE",
+ "MYSTERY",
+ "NON-FICTION",
+ "PARENTING",
+ "POLITICS",
+ "REFERENCE",
+ "RELIGION",
+ "ROMANCE",
+ "SELF-HELP",
+ "SCIENCE-NATURE",
+ "SCIENCE-FICTION",
+ "SPORTS",
+ "YOUTH",
+ "TRAVEL"
+ };
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random searchField" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] searchFields = {
+ "author",
+ "title",
+ "subject"
+};
+
+min = 0;
+max = searchFields.length -1;
+
+searchField = searchFields[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SEARCHFIELD", searchField);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product-detail" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product-detail" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product-detail</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/new-products" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/new-products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/new-products</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?I_ID=&QTY=1&ADD_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="QTY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">QTY</stringProp>
+ </elementProp>
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy?RETURNING_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="RETURNING_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">RETURNING_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="state" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">state</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(12,qwertyuiopasdfghjklzxcvbnm)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">55555555</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">04/01/2017</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/payment" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Izanska c. 233</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Ljubljana</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1000</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Germany</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Simon Ivansek</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">12345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">04/03/2014</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="distribution" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">expo</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">distribution</stringProp>
+ </elementProp>
+ <elementProp name="attr1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr1</stringProp>
+ </elementProp>
+ <elementProp name="attr3" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">2</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr3</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/payment</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-display" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-display" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-display</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="new_price" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${NEW_PRICE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">new_price</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-inquiry" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-inquiry" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-inquiry</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/customer-registration?SHOPPING_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer-registration</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shopping-cart?ADD_FLAG=N" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?ADD_FLAG=N" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">N</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ <stringProp name="Sample.scope">all</stringProp>
+ <stringProp name="Scope.variable">${SHOPPING_ID}</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/best-sellers" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/best-sellers" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/best-sellers</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="search( is SHOPPING_ID?)" enabled="true"/>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 10;
+min = 3;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("RAND_SEARCH_STRING_LENGTH", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search?searchField=&keyword=&C_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="searchField" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SEARCHFIELD}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">searchField</stringProp>
+ </elementProp>
+ <elementProp name="keyword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(${RAND_SEARCH_STRING_LENGTH},abcdefghijklmnopqrstuvwxyz,)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">keyword</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename">response-times-over-time.csv</stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group with random navigation" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOPS}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1479978082000</longProp>
+ <longProp name="ThreadGroup.end_time">1479978082000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability2" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+//int[] browsingMix = {
+// //2900, //home
+// 2100, // product-detail
+// 2100, // new-products
+// 75, //buy
+// 69, // buy-confirm
+// //25, // order-display
+// 9, // admin confirm
+// 10, // admin request
+// 30, // order-inquiry
+// 82, //customer-registration
+// 125, // shopping-cart
+// 2100, // best-sellers
+// 2100, // search-result
+// //1200, // search-request
+//};
+
+//int[] browsingMix = {
+// //2900, //home
+// 75, // product-detail
+// 69, // new-products
+// 9, //buy
+// 10, // buy-confirm
+// //25, // order-display
+// 30, // admin confirm
+// 82, // admin request
+// 125, // order-inquiry
+// 2100, //customer-registration
+// 2100, // shopping-cart
+// 2100, // best-sellers
+// 2100, // search-result
+// //1200, // search-request
+//};
+
+
+int[] browsingMix = {
+ //2900, //home
+ 69, // product-detail
+ 9, // new-products
+ 10, //buy
+ 30, // buy-confirm
+ //25, // order-display
+ 82, // admin confirm
+ 125, // admin request
+ 2100, // order-inquiry
+ 2100, //customer-registration
+ 2100, // shopping-cart
+ 2100, // best-sellers
+ 75, // search-result
+ //1200, // search-request
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] buy-confirm" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] ccTypes = {
+ "Visa",
+ "MasterCard",
+ "Discover",
+ "Amex",
+ "Diners"
+};
+
+String[] shippingTypes = {
+ "AIR",
+ "UPS",
+ "FEDEX",
+ "SHIP",
+ "COURIER",
+ "MAIL"
+};
+
+int min = 0;
+int max = ccTypes.length -1;
+
+ccType = ccTypes[rand.nextInt((max - min) + 1) + min];
+
+max = shippingTypes.length-1;
+
+shipping = shippingTypes[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_CC_TYPE", ccType);
+vars.put("RAND_SHIPPING", shipping);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {
+ "ARTS",
+ "BIOGRAPHIES",
+ "BUSINESS",
+ "CHILDREN",
+ "COMPUTERS",
+ "COOKING",
+ "HEALTH",
+ "HISTORY",
+ "HOME",
+ "HUMOR",
+ "LITERATURE",
+ "MYSTERY",
+ "NON-FICTION",
+ "PARENTING",
+ "POLITICS",
+ "REFERENCE",
+ "RELIGION",
+ "ROMANCE",
+ "SELF-HELP",
+ "SCIENCE-NATURE",
+ "SCIENCE-FICTION",
+ "SPORTS",
+ "YOUTH",
+ "TRAVEL"
+ };
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random searchField" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] searchFields = {
+ "author",
+ "title",
+ "subject"
+};
+
+min = 0;
+max = searchFields.length -1;
+
+searchField = searchFields[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SEARCHFIELD", searchField);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product-detail" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product-detail" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product-detail</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/new-products" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/new-products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/new-products</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?I_ID=&QTY=1&ADD_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="QTY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">QTY</stringProp>
+ </elementProp>
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy?RETURNING_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="RETURNING_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">RETURNING_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="state" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">state</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(12,qwertyuiopasdfghjklzxcvbnm)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">55555555</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">04/01/2017</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/payment" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Izanska c. 233</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Ljubljana</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1000</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Germany</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Simon Ivansek</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">12345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">04/03/2014</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="distribution" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">expo</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">distribution</stringProp>
+ </elementProp>
+ <elementProp name="attr1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr1</stringProp>
+ </elementProp>
+ <elementProp name="attr3" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">2</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr3</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/payment</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-display" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-display" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-display</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="new_price" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${NEW_PRICE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">new_price</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-inquiry" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-inquiry" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-inquiry</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/customer-registration?SHOPPING_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer-registration</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shopping-cart?ADD_FLAG=N" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?ADD_FLAG=N" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">N</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ <stringProp name="Sample.scope">all</stringProp>
+ <stringProp name="Scope.variable">${SHOPPING_ID}</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/best-sellers" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/best-sellers" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/best-sellers</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="search( is SHOPPING_ID?)" enabled="true"/>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 10;
+min = 3;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("RAND_SEARCH_STRING_LENGTH", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search?searchField=&keyword=&C_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="searchField" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SEARCHFIELD}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">searchField</stringProp>
+ </elementProp>
+ <elementProp name="keyword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(${RAND_SEARCH_STRING_LENGTH},abcdefghijklmnopqrstuvwxyz,)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">keyword</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group with adaptive workload" enabled="true">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOPS}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1479978082000</longProp>
+ <longProp name="ThreadGroup.end_time">1479978082000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Start timer" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random
+
+SampleResult.setIgnore()
+
+log.info("USER: " + ctx.getThreadNum());
+
+ctx.getThread().setStartTime(System.currentTimeMillis())
+
+rand = new Random();
+vars.putObject("RANDOM", rand);
+
+String Filename = vars.get("WORKLOAD_FILE");
+String fileContents = new File(Filename).getText('UTF-8');
+def lines = 0;
+ fileContents.eachLine { line ->
+ int[] runningIntervals = Arrays.stream(line.replace("[","").replace("]","").replaceAll(" ","").split(",")).mapToInt(Integer::parseInt).toArray();
+ log.info("Workload Loaded:" + runningIntervals);
+ vars.putObject("WORKLOAD_USER_" + lines, runningIntervals);
+ lines++;
+ }
+vars.put("WORKLOAD_FILE_LENGTH",lines.toString());</stringProp>
+ <stringProp name="scriptLanguage">groovy</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ </hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Transition table" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+SampleResult.setIgnore();
+
+Random rand = vars.getObject("RANDOM");
+
+long started = ctx.getThread().getStartTime();
+long millis = (System.currentTimeMillis() - started);
+long minutes = (millis / 1000) / 60;
+int seconds = (int)((millis / 1000) % 60);
+
+// instant, workload mix
+int[] runningIntervals = vars.getObject("WORKLOAD_USER_" + ctx.getThreadNum());
+
+log.info("Workload Loaded:" + ctx.getThreadNum());
+
+// do not do anything while not authorized to do so
+if (runningIntervals[seconds] < 1){
+ vars.putObject("ACT", false);
+ return;
+} else {
+ vars.putObject("ACT", true);
+}
+
+//if(runningIntervals[seconds] == 1) {
+int[] browsingMix = {
+ //2900, //home
+ 69, // product-detail
+ 9, // new-products
+ 10, //buy
+ 30, // buy-confirm
+ //25, // order-display
+ 82, // admin confirm
+ 125, // admin request
+ 2100, // order-inquiry
+ 2100, //customer-registration
+ 2100, // shopping-cart
+ 2100, // best-sellers
+ 75, // search-result
+ //1200, // search-request
+};
+
+if(runningIntervals[seconds] == 2) {
+ //2900, //home
+ browsingMix[0] = 2100; // product-detail
+ browsingMix[1] = 2100; // new-products
+ browsingMix[2] = 75; //buy
+ browsingMix[3] = 69; // buy-confirm
+ //25, // order-display
+ browsingMix[4] = 9; // admin confirm
+ browsingMix[5] = 10; // admin request
+ browsingMix[6] = 30; // order-inquiry
+ browsingMix[7] = 82; //customer-registration
+ browsingMix[8] = 125; // shopping-cart
+ browsingMix[9] = 2100; // best-sellers
+ browsingMix[10] = 2100; // search-result
+ //1200, // search-request
+}
+
+if(runningIntervals[seconds] == 3) {
+ //2900, //home
+ browsingMix[0] = 75; // product-detail
+ browsingMix[1] = 69; // new-products
+ browsingMix[2] = 9; //buy
+ browsingMix[3] = 10; // buy-confirm
+ //25, // order-display
+ browsingMix[4] = 30; // admin confirm
+ browsingMix[5] = 82; // admin request
+ browsingMix[6] = 125; // order-inquiry
+ browsingMix[7] = 2100; //customer-registration
+ browsingMix[8] = 2100; // shopping-cart
+ browsingMix[9] = 2100; // best-sellers
+ browsingMix[10] = 2100; // search-result
+ //1200, // search-request
+}
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ <stringProp name="scriptLanguage">beanshell</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability2" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+//int[] browsingMix = {
+// //2900, //home
+// 2100, // product-detail
+// 2100, // new-products
+// 75, //buy
+// 69, // buy-confirm
+// //25, // order-display
+// 9, // admin confirm
+// 10, // admin request
+// 30, // order-inquiry
+// 82, //customer-registration
+// 125, // shopping-cart
+// 2100, // best-sellers
+// 2100, // search-result
+// //1200, // search-request
+//};
+
+//int[] browsingMix = {
+// //2900, //home
+// 75, // product-detail
+// 69, // new-products
+// 9, //buy
+// 10, // buy-confirm
+// //25, // order-display
+// 30, // admin confirm
+// 82, // admin request
+// 125, // order-inquiry
+// 2100, //customer-registration
+// 2100, // shopping-cart
+// 2100, // best-sellers
+// 2100, // search-result
+// //1200, // search-request
+//};
+
+
+int[] browsingMix = {
+ //2900, //home
+ 69, // product-detail
+ 9, // new-products
+ 10, //buy
+ 30, // buy-confirm
+ //25, // order-display
+ 82, // admin confirm
+ 125, // admin request
+ 2100, // order-inquiry
+ 2100, //customer-registration
+ 2100, // shopping-cart
+ 2100, // best-sellers
+ 75, // search-result
+ //1200, // search-request
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] buy-confirm" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] ccTypes = {
+ "Visa",
+ "MasterCard",
+ "Discover",
+ "Amex",
+ "Diners"
+};
+
+String[] shippingTypes = {
+ "AIR",
+ "UPS",
+ "FEDEX",
+ "SHIP",
+ "COURIER",
+ "MAIL"
+};
+
+int min = 0;
+int max = ccTypes.length -1;
+
+ccType = ccTypes[rand.nextInt((max - min) + 1) + min];
+
+max = shippingTypes.length-1;
+
+shipping = shippingTypes[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_CC_TYPE", ccType);
+vars.put("RAND_SHIPPING", shipping);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {
+ "ARTS",
+ "BIOGRAPHIES",
+ "BUSINESS",
+ "CHILDREN",
+ "COMPUTERS",
+ "COOKING",
+ "HEALTH",
+ "HISTORY",
+ "HOME",
+ "HUMOR",
+ "LITERATURE",
+ "MYSTERY",
+ "NON-FICTION",
+ "PARENTING",
+ "POLITICS",
+ "REFERENCE",
+ "RELIGION",
+ "ROMANCE",
+ "SELF-HELP",
+ "SCIENCE-NATURE",
+ "SCIENCE-FICTION",
+ "SPORTS",
+ "YOUTH",
+ "TRAVEL"
+ };
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random searchField" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] searchFields = {
+ "author",
+ "title",
+ "subject"
+};
+
+min = 0;
+max = searchFields.length -1;
+
+searchField = searchFields[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SEARCHFIELD", searchField);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">${ACT}</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <boolProp name="IfController.useExpression">true</boolProp>
+ </IfController>
+ <hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product-detail" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product-detail" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product-detail</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/new-products" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/new-products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/new-products</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?I_ID=&QTY=1&ADD_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="QTY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">QTY</stringProp>
+ </elementProp>
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy?RETURNING_FLAG=Y" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="RETURNING_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Y</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">RETURNING_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/buy-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/buy-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="state" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">state</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(12,qwertyuiopasdfghjklzxcvbnm)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">55555555</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">04/01/2017</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/buy-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/payment" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="street1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Izanska c. 233</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street1</stringProp>
+ </elementProp>
+ <elementProp name="street2" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">street2</stringProp>
+ </elementProp>
+ <elementProp name="city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Ljubljana</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">city</stringProp>
+ </elementProp>
+ <elementProp name="zip" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">1000</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">zip</stringProp>
+ </elementProp>
+ <elementProp name="country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">Germany</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">country</stringProp>
+ </elementProp>
+ <elementProp name="CC_TYPE" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_CC_TYPE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_TYPE</stringProp>
+ </elementProp>
+ <elementProp name="CC_NAME" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">Simon Ivansek</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NAME</stringProp>
+ </elementProp>
+ <elementProp name="CC_NUMBER" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">12345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_NUMBER</stringProp>
+ </elementProp>
+ <elementProp name="CC_EXPIRY" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">04/03/2014</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">CC_EXPIRY</stringProp>
+ </elementProp>
+ <elementProp name="SHIPPING" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SHIPPING}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHIPPING</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ <elementProp name="distribution" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">expo</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">distribution</stringProp>
+ </elementProp>
+ <elementProp name="attr1" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr1</stringProp>
+ </elementProp>
+ <elementProp name="attr3" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">2</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">attr3</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/payment</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-display" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-display" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">username</stringProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__digSyl(${CUSTOMER_ID})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-display</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin-confirm" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin-confirm" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ <elementProp name="new_price" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${NEW_PRICE}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">new_price</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin-confirm</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/admin" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="I_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${ITEM_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">I_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/admin</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order-inquiry" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order-inquiry" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order-inquiry</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/customer-registration?SHOPPING_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SHOPPING_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${SHOPPING_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer-registration</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shopping-cart?ADD_FLAG=N" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shopping-cart?ADD_FLAG=N" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="ADD_FLAG" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">N</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">ADD_FLAG</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/shopping-cart</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor - SHOPPING_ID" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">SHOPPING_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">SHOPPING_ID=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">0</stringProp>
+ <stringProp name="RegexExtractor.match_number">0</stringProp>
+ <stringProp name="Sample.scope">all</stringProp>
+ <stringProp name="Scope.variable">${SHOPPING_ID}</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/best-sellers" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/best-sellers" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="SUBJECT" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SUBJECT}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">SUBJECT</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/best-sellers</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product-detail(.+)\\?I_ID=([0-9]+)(.+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(2));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
+ <collectionProp name="Asserion.test_strings"/>
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp name="Assertion.assume_success">true</boolProp>
+ <intProp name="Assertion.test_type">16</intProp>
+ <stringProp name="Assertion.scope">all</stringProp>
+ <stringProp name="Assertion.custom_message"></stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="search( is SHOPPING_ID?)" enabled="true"/>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 10;
+min = 3;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("RAND_SEARCH_STRING_LENGTH", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search?searchField=&keyword=&C_ID=" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="searchField" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${RAND_SEARCHFIELD}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">searchField</stringProp>
+ </elementProp>
+ <elementProp name="keyword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${__RandomString(${RAND_SEARCH_STRING_LENGTH},abcdefghijklmnopqrstuvwxyz,)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">keyword</stringProp>
+ </elementProp>
+ <elementProp name="C_ID" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">${CUSTOMER_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">C_ID</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="false"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ </hashTree>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ </hashTree>
+</jmeterTestPlan>
evaluation/workloads/adaptive/petclinic.jmx 2306(+2306 -0)
diff --git a/evaluation/workloads/adaptive/petclinic.jmx b/evaluation/workloads/adaptive/petclinic.jmx
new file mode 100644
index 0000000..710efad
--- /dev/null
+++ b/evaluation/workloads/adaptive/petclinic.jmx
@@ -0,0 +1,2306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3">
+ <hashTree>
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Petclinic" enabled="true">
+ <stringProp name="TestPlan.comments"></stringProp>
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
+ <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="PETCLINIC_HOST" elementType="Argument">
+ <stringProp name="Argument.name">PETCLINIC_HOST</stringProp>
+ <stringProp name="Argument.value">localhost</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="PETCLINIC_PORT" elementType="Argument">
+ <stringProp name="Argument.name">PETCLINIC_PORT</stringProp>
+ <stringProp name="Argument.value">8080</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="CONTEXT_WEB" elementType="Argument">
+ <stringProp name="Argument.name">CONTEXT_WEB</stringProp>
+ <stringProp name="Argument.value">petclinic</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_USERS_SIMULATED" elementType="Argument">
+ <stringProp name="Argument.name">NUM_USERS_SIMULATED</stringProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_LOOPS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_LOOPS</stringProp>
+ <stringProp name="Argument.value">500</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="WORKLOAD_FILE" elementType="Argument">
+ <stringProp name="Argument.name">WORKLOAD_FILE</stringProp>
+ <stringProp name="Argument.value">C:\Users\mertz\Documents\workspace\phd\adaptive-monitoring-framework\evaluation\workloads\workload.txt</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="TestPlan.user_define_classpath"></stringProp>
+ </TestPlan>
+ <hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads - original" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">10</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <boolProp name="ThreadGroup.delayedStart">true</boolProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Fixed time counter" enabled="true">
+ <stringProp name="ConstantTimer.delay">300</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default HTTP parameters" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${PETCLINIC_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PETCLINIC_PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP cookie manager" enabled="true">
+ <collectionProp name="CookieManager.cookies"/>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="User Count" enabled="true">
+ <stringProp name="CounterConfig.start">1</stringProp>
+ <stringProp name="CounterConfig.end">10</stringProp>
+ <stringProp name="CounterConfig.incr">1</stringProp>
+ <stringProp name="CounterConfig.name">count</stringProp>
+ <stringProp name="CounterConfig.format"></stringProp>
+ <boolProp name="CounterConfig.per_user">false</boolProp>
+ </CounterConfig>
+ <hashTree/>
+ <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Pet Count" enabled="true">
+ <stringProp name="CounterConfig.start">1</stringProp>
+ <stringProp name="CounterConfig.end">13</stringProp>
+ <stringProp name="CounterConfig.incr">1</stringProp>
+ <stringProp name="CounterConfig.name">petCount</stringProp>
+ <stringProp name="CounterConfig.format"></stringProp>
+ <boolProp name="CounterConfig.per_user">false</boolProp>
+ </CounterConfig>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Home page" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="CSS" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/resources/css/petclinic.css</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="JS" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/vendors/jquery/jquery.js</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Vets" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/vets.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/find.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner with lastname=""" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners.html?lastName=</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST Edit Owner" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">firstName=Test&lastName=${count}&address=1234+Test+St.&city=TestCity&telephone=612345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New visit" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}/pets/${petCount}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST new visit" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">date=2013%2F02%2F22&description=visit</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}/pets/${petCount}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${count}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="Results" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregated report" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename">/home/jhonnymertz/Desktop/sa.csv</stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads with Thinking time" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">1000</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">10</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <boolProp name="ThreadGroup.delayedStart">true</boolProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default HTTP parameters" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${PETCLINIC_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PETCLINIC_PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+ <stringProp name="HTTPSampler.proxyHost">127.0.0.1</stringProp>
+ <stringProp name="HTTPSampler.proxyPort">3128</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP cookie manager" enabled="true">
+ <collectionProp name="CookieManager.cookies"/>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Pet" enabled="true">
+ <stringProp name="maximumValue">13</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_PET</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Owner" enabled="true">
+ <stringProp name="maximumValue">10</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_OWNER</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+int[] browsingMix = {
+ 2900, //home
+ 1000, //vets
+ 2100, //findOwner
+ 1500, //findOwnerByName
+ 800, //owner
+ 200, //editOwner
+ 50, //postOwner
+ 200, //newVisit
+ 100 //postNewVisit
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Home page" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Vets" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/vets.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/find.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner with lastname=""" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners.html?lastName=</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST Edit Owner" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">firstName=Test&lastName=${RANDOM_OWNER}&address=1234+Test+St.&city=TestCity&telephone=612345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New visit" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST new visit" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">date=2013%2F02%2F22&description=visit</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Thinking Gaussian Random Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ <stringProp name="RandomTimer.range">7000</stringProp>
+ </GaussianRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename">/home/jhonnymertz/Desktop/report.csv</stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels">Debug Sampler</stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Active Threads Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.reporters.FlexibleFileWriter guiclass="kg.apc.jmeter.reporters.FlexibleFileWriterGui" testclass="kg.apc.jmeter.reporters.FlexibleFileWriter" testname="jp@gc - Flexible File Writer" enabled="false">
+ <stringProp name="filename">testResults.txt</stringProp>
+ <stringProp name="columns">endTimeMillis|\t|responseTime|\t|latency|\t|sentBytes|\t|receivedBytes|\t|isSuccessful|\t|responseCode|\r\n</stringProp>
+ <boolProp name="overwrite">false</boolProp>
+ <stringProp name="header">endTimeMillis responseTime latency sentBytes receivedBytes isSuccessful responseCode
+</stringProp>
+ <stringProp name="footer"></stringProp>
+ </kg.apc.jmeter.reporters.FlexibleFileWriter>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads - adaptive workload" enabled="true">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOPS}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default HTTP parameters" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${PETCLINIC_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PETCLINIC_PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP cookie manager" enabled="true">
+ <collectionProp name="CookieManager.cookies"/>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Pet" enabled="true">
+ <stringProp name="maximumValue">13</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_PET</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Owner" enabled="true">
+ <stringProp name="maximumValue">10</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_OWNER</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] random switch" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+long started = ctx.getThread().getStartTime()
+long millis = (System.currentTimeMillis() - started);
+long minutes = (millis / 1000) / 60;
+int seconds = (int)((millis / 1000) % 60);
+
+// instant, workload mix
+int[] runningIntervals = {
+ 3,
+ 3,
+ 0,
+ 0,
+ 0,
+ 0,
+ 3,
+ 3
+};
+
+// do not do anything while not authorized to do so
+if (runningIntervals[seconds] < 1){
+ vars.putObject("ACT", false);
+ return;
+} else {
+ vars.putObject("ACT", true);
+}
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {};
+
+if(vars.get("RANDOM_WORKLOAD_MIX") == 1) {
+ browsingMix = {
+ 2100, //vets
+ 1000, //search owners
+ 800, //owner
+ 125, //edit_owner
+ 600, //new_visit
+ };
+}
+
+if(vars.get("RANDOM_WORKLOAD_MIX") == 2) {
+ browsingMix = {
+ 1000, //vets
+ 800, //search owners
+ 125, //owner
+ 600, //edit_owner
+ 2100, //new_visit
+ };
+}
+
+if(vars.get("RANDOM_WORKLOAD_MIX") == 3) {
+ browsingMix = {
+ 800, //vets
+ 125, //search owners
+ 600, //owner
+ 2100, //edit_owner
+ 1000, //new_visit
+ };
+}
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Start timer" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random
+
+SampleResult.setIgnore()
+
+log.info("USER: " + ctx.getThreadNum());
+
+ctx.getThread().setStartTime(System.currentTimeMillis())
+
+rand = new Random();
+vars.putObject("RANDOM", rand);
+
+String Filename = vars.get("WORKLOAD_FILE");
+String fileContents = new File(Filename).getText('UTF-8');
+def lines = 0;
+ fileContents.eachLine { line ->
+ int[] runningIntervals = Arrays.stream(line.replace("[","").replace("]","").replaceAll(" ","").split(",")).mapToInt(Integer::parseInt).toArray();
+ log.info("Workload Loaded:" + runningIntervals);
+ vars.putObject("WORKLOAD_USER_" + lines, runningIntervals);
+ lines++;
+ }
+vars.put("WORKLOAD_FILE_LENGTH",lines.toString());</stringProp>
+ <stringProp name="scriptLanguage">groovy</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ </hashTree>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Active Threads Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.reporters.FlexibleFileWriter guiclass="kg.apc.jmeter.reporters.FlexibleFileWriterGui" testclass="kg.apc.jmeter.reporters.FlexibleFileWriter" testname="jp@gc - Flexible File Writer" enabled="false">
+ <stringProp name="filename">testResults.txt</stringProp>
+ <stringProp name="columns">endTimeMillis|\t|responseTime|\t|latency|\t|sentBytes|\t|receivedBytes|\t|isSuccessful|\t|responseCode|\r\n</stringProp>
+ <boolProp name="overwrite">false</boolProp>
+ <stringProp name="header">endTimeMillis responseTime latency sentBytes receivedBytes isSuccessful responseCode
+</stringProp>
+ <stringProp name="footer"></stringProp>
+ </kg.apc.jmeter.reporters.FlexibleFileWriter>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Transition table" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+SampleResult.setIgnore();
+
+Random rand = vars.getObject("RANDOM");
+
+long started = ctx.getThread().getStartTime();
+long millis = (System.currentTimeMillis() - started);
+long minutes = (millis / 1000) / 60;
+int seconds = (int)((millis / 1000) % 60);
+
+// instant, workload mix
+int[] runningIntervals = vars.getObject("WORKLOAD_USER_" + ctx.getThreadNum());
+
+log.info("Workload Loaded:" + ctx.getThreadNum());
+
+// do not do anything while not authorized to do so
+if (runningIntervals[seconds] < 1){
+ vars.putObject("ACT", false);
+ return;
+} else {
+ vars.putObject("ACT", true);
+}
+
+//if(runningIntervals[seconds] == 1) {
+int[] browsingMix = {
+ 2100, //vets
+ 1000, //search owners
+ 800, //owner
+ 125, //edit_owner
+ 600, //new_visit
+ };
+
+if(runningIntervals[seconds] == 2) {
+ browsingMix[0] = 1000; //vets
+ browsingMix[1] = 800; //search owners
+ browsingMix[2] = 125; //owner
+ browsingMix[3] = 600; //edit_owner
+ browsingMix[4] = 2100; //new_visit
+}
+
+if(runningIntervals[seconds] == 3) {
+ browsingMix[0] = 800; //vets
+ browsingMix[1] = 125; //search owners
+ browsingMix[2] = 600; //owner
+ browsingMix[3] = 2100; //edit_owner
+ browsingMix[4] = 1000; //new_visit
+}
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ <stringProp name="scriptLanguage">beanshell</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">${ACT}</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <boolProp name="IfController.useExpression">true</boolProp>
+ </IfController>
+ <hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Home page" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Vets" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/vets.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/find.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner with lastname=""" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners.html?lastName=${RANDOM_OWNER}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Owner" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST Edit Owner" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">firstName=Test&lastName=${RANDOM_OWNER}&address=1234+Test+St.&city=TestCity&telephone=612345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New visit" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST new visit" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">date=2013%2F02%2F22&description=visit</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+ <boolProp name="ResultCollector.error_logging">true</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels">Debug Sampler</stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads - Random navigation" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOPS}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default HTTP parameters" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${PETCLINIC_HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PETCLINIC_PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP cookie manager" enabled="true">
+ <collectionProp name="CookieManager.cookies"/>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Pet" enabled="true">
+ <stringProp name="maximumValue">13</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_PET</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Owner" enabled="true">
+ <stringProp name="maximumValue">10</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">true</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">RANDOM_OWNER</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] random switch" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ //2900, //home
+ 2100, //vets
+ 1000, //search owners
+ 800, //owner
+ 125, //edit_owner
+ 600, //new_visit
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Home page" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Vets" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/vets.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/find.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Find owner with lastname=""" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners.html?lastName=${RANDOM_OWNER}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Owner" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Owner" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST Edit Owner" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">firstName=Test&lastName=${RANDOM_OWNER}&address=1234+Test+St.&city=TestCity&telephone=612345678</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/edit.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New visit" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pr�-d�finies" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="POST new visit" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">date=2013%2F02%2F22&description=visit</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain"></stringProp>
+ <stringProp name="HTTPSampler.port"></stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${CONTEXT_WEB}/owners/${RANDOM_OWNER}/pets/${RANDOM_PET}/visits/new</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Thinking Gaussian Random Timer" enabled="false">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ <stringProp name="RandomTimer.range">7000</stringProp>
+ </GaussianRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels">Debug Sampler</stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Active Threads Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.reporters.FlexibleFileWriter guiclass="kg.apc.jmeter.reporters.FlexibleFileWriterGui" testclass="kg.apc.jmeter.reporters.FlexibleFileWriter" testname="jp@gc - Flexible File Writer" enabled="false">
+ <stringProp name="filename">testResults.txt</stringProp>
+ <stringProp name="columns">endTimeMillis|\t|responseTime|\t|latency|\t|sentBytes|\t|receivedBytes|\t|isSuccessful|\t|responseCode|\r\n</stringProp>
+ <boolProp name="overwrite">false</boolProp>
+ <stringProp name="header">endTimeMillis responseTime latency sentBytes receivedBytes isSuccessful responseCode
+</stringProp>
+ <stringProp name="footer"></stringProp>
+ </kg.apc.jmeter.reporters.FlexibleFileWriter>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ </hashTree>
+</jmeterTestPlan>
evaluation/workloads/adaptive/shopizer.jmx 13646(+13646 -0)
diff --git a/evaluation/workloads/adaptive/shopizer.jmx b/evaluation/workloads/adaptive/shopizer.jmx
new file mode 100644
index 0000000..3c953af
--- /dev/null
+++ b/evaluation/workloads/adaptive/shopizer.jmx
@@ -0,0 +1,13646 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3">
+ <hashTree>
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Shopizer" enabled="true">
+ <stringProp name="TestPlan.comments"></stringProp>
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
+ <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="WORKLOAD_FILE" elementType="Argument">
+ <stringProp name="Argument.name">WORKLOAD_FILE</stringProp>
+ <stringProp name="Argument.value">C:\Users\mertz\Documents\workspace\phd\adaptive-monitoring-framework\evaluation\workloads\workload.txt</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="TestPlan.user_define_classpath"></stringProp>
+ </TestPlan>
+ <hashTree>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - COMMON" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="NUM_ITEMS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_ITEMS</stringProp>
+ <stringProp name="Argument.value">100</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_EBS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_EBS</stringProp>
+ <stringProp name="Argument.value">100</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="HOST" elementType="Argument">
+ <stringProp name="Argument.name">HOST</stringProp>
+ <stringProp name="Argument.value">localhost</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">${__P(host)}</stringProp>
+ </elementProp>
+ <elementProp name="PORT" elementType="Argument">
+ <stringProp name="Argument.name">PORT</stringProp>
+ <stringProp name="Argument.value">8080</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">${__P(remote_port)}</stringProp>
+ </elementProp>
+ <elementProp name="SHOWCASE" elementType="Argument">
+ <stringProp name="Argument.name">SHOWCASE</stringProp>
+ <stringProp name="Argument.value">/sm-shop/shop</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="SHOPPING_ID" elementType="Argument">
+ <stringProp name="Argument.name">SHOPPING_ID</stringProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <stringProp name="Argument.desc">The value is set during scenario execution!</stringProp>
+ </elementProp>
+ <elementProp name="ITEM_ID" elementType="Argument">
+ <stringProp name="Argument.name">ITEM_ID</stringProp>
+ <stringProp name="Argument.value"></stringProp>
+ <stringProp name="Argument.desc">The value is set during scenario execution!</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="SWITCH_ID" elementType="Argument">
+ <stringProp name="Argument.name">SWITCH_ID</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.desc">The value will change during scenarion exectution. Don't change initial value!</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="COUNTER" elementType="Argument">
+ <stringProp name="Argument.name">COUNTER</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="STARTUP_THREADS" elementType="Argument">
+ <stringProp name="Argument.name">STARTUP_THREADS</stringProp>
+ <stringProp name="Argument.value">${__P(startup_threads)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="REST_THREADS" elementType="Argument">
+ <stringProp name="Argument.name">REST_THREADS</stringProp>
+ <stringProp name="Argument.value">${__P(rest_threads)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="SHOWCASE_ADMIN" elementType="Argument">
+ <stringProp name="Argument.name">SHOWCASE_ADMIN</stringProp>
+ <stringProp name="Argument.value">/sm-shop/admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_USERS_SIMULATED" elementType="Argument">
+ <stringProp name="Argument.name">NUM_USERS_SIMULATED</stringProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="NUM_LOOP_COUNT" elementType="Argument">
+ <stringProp name="Argument.name">NUM_LOOP_COUNT</stringProp>
+ <stringProp name="Argument.value">500</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - NUM_CUSTOMERS" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="NUM_CUSTOMERS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_CUSTOMERS</stringProp>
+ <stringProp name="Argument.value">5</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - NUM_CUSTOMERS" enabled="false">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="NUM_CUSTOMERS" elementType="Argument">
+ <stringProp name="Argument.name">NUM_CUSTOMERS</stringProp>
+ <stringProp name="Argument.value">${__BeanShell(num_ebs = vars.get("NUM_EBS"); return Integer.parseInt(num_ebs) * 2880;)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - CUSTOMER_ID" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="CUSTOMER_ID" elementType="Argument">
+ <stringProp name="Argument.name">CUSTOMER_ID</stringProp>
+ <stringProp name="Argument.value">${__Random(1, ${NUM_CUSTOMERS})}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables - CUSTOMER_NAME" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="CUSTOMER_NAME" elementType="Argument">
+ <stringProp name="Argument.name">CUSTOMER_NAME</stringProp>
+ <stringProp name="Argument.value">none</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="CART_CODE" elementType="Argument">
+ <stringProp name="Argument.name">CART_CODE</stringProp>
+ <stringProp name="Argument.value">none</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </Arguments>
+ <hashTree/>
+ <kg.apc.jmeter.threads.UltimateThreadGroup guiclass="kg.apc.jmeter.threads.UltimateThreadGroupGui" testclass="kg.apc.jmeter.threads.UltimateThreadGroup" testname="Shopizer Customer" enabled="false">
+ <collectionProp name="ultimatethreadgroupdata">
+ <collectionProp name="-465685905">
+ <stringProp name="-1665047411">${STARTUP_THREADS}</stringProp>
+ <stringProp name="48">0</stringProp>
+ <stringProp name="48">0</stringProp>
+ <stringProp name="1597881">4140</stringProp>
+ <stringProp name="48">0</stringProp>
+ </collectionProp>
+ <collectionProp name="2134964757">
+ <stringProp name="-1687916888">${REST_THREADS}</stringProp>
+ <stringProp name="48687">120</stringProp>
+ <stringProp name="52593">540</stringProp>
+ <stringProp name="1571097">3480</stringProp>
+ <stringProp name="0"></stringProp>
+ </collectionProp>
+ </collectionProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <intProp name="LoopController.loops">-1</intProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ </kg.apc.jmeter.threads.UltimateThreadGroup>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability2" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 1100, // category
+ 250, // add product to shop cart
+ 250, // buy
+ 750, //checkout
+ 300, // order revision
+ 82, //customer-registration
+ 125, // shoppingCart
+ 1200, // search
+ 1000, //login
+ 100, //logout
+ //9, // add product
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {"computer-books","technology","the-web","fiction","business","cloud-computing","novels"};
+
+//String[] subjects = {"ARTS","BIOGRAPHIES","BUSINESS","CHILDREN","COMPUTERS","COOKING","HEALTH","HISTORY","HOME","HUMOR","LITERATURE","MYSTERY","NON-FICTION","PARENTING","POLITICS","REFERENCE","RELIGION","ROMANCE","SELF-HELP","SCIENCE-NATURE","SCIENCE-FICTION","SPORTS","YOUTH","TRAVEL"};
+
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);
+vars.put("billing.country", "CA");
+vars.put("billing.zone", "QC");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random quantity" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 4;
+min = 1;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("QUANTITY", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product/Description${ITEM_ID}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">details of a product</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/category" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/category" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/category/${RAND_SUBJECT}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/addShoppingCartItem" enabled="true"/>
+ <hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add with code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID}}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add without code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID},"code":"${CART_CODE}"}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/commitOrder" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="[Ignore] - If has CART_CODE" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random buy" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("_shipToBillingAdress","on");
+vars.put("customer.billing.address","customer" + id);
+vars.put("customer.billing.city","customer" + id);
+vars.put("customer.billing.company","customer" + id);
+vars.put("customer.billing.country","CA");
+vars.put("customer.billing.firstName","customer" + id);
+vars.put("customer.billing.lastName","customer" + id);
+vars.put("customer.billing.phone","(123)123-1231");
+vars.put("customer.billing.postalCode","H2H2H2");
+vars.put("customer.billing.stateProvince","");
+vars.put("customer.billing.zone","QC");
+vars.put("customer.delivery.address","");
+vars.put("customer.delivery.city","");
+vars.put("customer.delivery.company","");
+vars.put("customer.delivery.country","CA");
+vars.put("customer.delivery.firstName","");
+vars.put("customer.delivery.lastName","");
+vars.put("customer.delivery.postalCode","H2H2H2");
+vars.put("customer.delivery.stateProvince","");
+vars.put("customer.delivery.zone","QC");
+vars.put("customer.emailAddress","asdhjk2a@asdlkjaskl.com");
+vars.put("paymentMethodType","MONEYORDER");
+vars.put("paymentModule","moneyorder");
+vars.put("shipToBillingAdress","true");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/commitOrder" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.firstName"
+
+${customer.billing.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.lastName"
+
+${customer.billing.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.emailAddress"
+
+${customer.emailAddress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.company"
+
+${customer.billing.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.address"
+
+${customer.billing.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.city"
+
+${customer.billing.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.postalCode"
+
+${customer.billing.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.zone"
+
+${customer.billing.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.stateProvince"
+
+${customer.billing.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.country"
+
+${customer.billing.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.phone"
+
+${customer.billing.phone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="shipToBillingAdress"
+
+${shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="_shipToBillingAdress"
+
+${_shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.firstName"
+
+${customer.delivery.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.lastName"
+
+${customer.delivery.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.company"
+
+${customer.delivery.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.address"
+
+${customer.delivery.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.city"
+
+${customer.delivery.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.postalCode"
+
+${customer.delivery.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.zone"
+
+${customer.delivery.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.stateProvince"
+
+${customer.delivery.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.country"
+
+${customer.delivery.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentMethodType"
+
+${paymentMethodType}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentModule"
+
+${paymentModule}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5--</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/commitOrder.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryutul361rMswzcxJf</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CART_CODE","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/confirmation" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/confirmation.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/checkout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="[Ignore] - If has CART_CODE" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shoppingCartCode" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/displayMiniCartByCode.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/checkout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/checkout.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="[Ignore] - If has CART_CODE" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/orders" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/orders.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/dashboard.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ORDER_ID" enabled="false">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+vars.put("ORDER_ID","none");
+String patternString = "orderId=([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+//print(ids);
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ORDER_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">ORDER_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">orderId=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">none</stringProp>
+ <stringProp name="RegexExtractor.match_number">1</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${ORDER_ID}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/order.html?orderId=${ORDER_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/orders.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="register if" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random customer" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("billing.country", "CA");
+vars.put("billing.firstName", "customer" + id);
+vars.put("billing.lastName", "customer" + id);
+vars.put("billing.stateProvince", "");
+vars.put("billing.zone", "QC");
+vars.put("checkPassword", "customer" + id);
+vars.put("emailAddress", "customer" + id + "@shopizer.com");
+vars.put("gender", "M");
+vars.put("password", "customer" + id);
+vars.put("recaptcha_challenge_field", "03AHJ_Vuu60YpLxvrEZXbeT9av_dgxQE2j0ePMCYmY4TSklsHNQ0ZI6JoEUc4lh-BUQ3lMhH1-tzu1norevG6CJtx9gqKl_t4rkSbOBM7ps6IYXog-0v52_IaVbac00y9Gt2mWdAimF9TWPab7RiSaI3xldM0AjdZnJCw3574q7KxwebHiaMDWALh1yl6D9hOBx0M3ZAfe384PrNQplEd9F8iCQkEoWkLB3Q");
+vars.put("recaptcha_response_field", "customer" + id);
+vars.put("register", "Register");
+vars.put("userName", "customer" + id);
+
+vars.put("NEW_CUSTOMER_ID", Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + id);
+
+</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="customer/register" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="billing.country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.country</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.firstName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.firstName</stringProp>
+ <stringProp name="Argument.value">${billing.firstName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.lastName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.lastName</stringProp>
+ <stringProp name="Argument.value">${billing.lastName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.stateProvince" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.stateProvince</stringProp>
+ <stringProp name="Argument.value">${billing.stateProvince}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.zone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.zone</stringProp>
+ <stringProp name="Argument.value">${billing.zone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="checkPassword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">checkPassword</stringProp>
+ <stringProp name="Argument.value">${checkPassword}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="emailAddress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">emailAddress</stringProp>
+ <stringProp name="Argument.value">${emailAddress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="gender" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">gender</stringProp>
+ <stringProp name="Argument.value">${gender}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${password}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_challenge_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_challenge_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_challenge_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_response_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_response_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_response_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="register" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">register</stringProp>
+ <stringProp name="Argument.value">${register}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${userName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/register.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_ID", vars.get("NEW_CUSTOMER_ID"));
+vars.put("CUSTOMER_NAME", vars.get("NEW_CUSTOMER_NAME"));</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shoppingCart" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shoppingCart" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/shoppingCart.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="q" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">q</stringProp>
+ <stringProp name="Argument.value">asdas</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search/search.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/login" enabled="true"/>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="login if" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/login" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="storeCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">storeCode</stringProp>
+ <stringProp name="Argument.value">DEFAULT</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/logon.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("CUSTOMER_NAME","customer" + Integer.toString(id));
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] NEW CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+price = Integer.toString(rand.nextInt((max - min) + 1) + min);
+
+vars.put("CUSTOMER_NAME","customer" + price);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/logout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="logout if" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/logout if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME", null);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/add" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="orders/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/orders/paging.html?_endRow=10</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1208.4</stringProp>
+ <stringProp name="ConstantTimer.delay">2416.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/products.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">397.6</stringProp>
+ <stringProp name="ConstantTimer.delay">795.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/createProduct" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/createProduct.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/products.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">703.2</stringProp>
+ <stringProp name="ConstantTimer.delay">1406.4</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/save" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.available</stringProp>
+ <stringProp name="Argument.value">${_product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${_product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.id</stringProp>
+ <stringProp name="Argument.value">${availability.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantity" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantity</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantity}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMax" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMax</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMax}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMin" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMin</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMin}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.region" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.region</stringProp>
+ <stringProp name="Argument.value">${availability.region}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="dateAvailable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">dateAvailable</stringProp>
+ <stringProp name="Argument.value">${dateAvailable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].description" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].description</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].description}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.code" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.code</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.code}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagDescription" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagDescription</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagDescription}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagKeywords" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagKeywords</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagKeywords}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagTitle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagTitle</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagTitle}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].name" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].name</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].name}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productExternalDl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productExternalDl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productExternalDl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productHighlight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productHighlight</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productHighlight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].seUrl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].seUrl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].seUrl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="image" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">image</stringProp>
+ <stringProp name="Argument.value">${image}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="price.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">price.id</stringProp>
+ <stringProp name="Argument.value">${price.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.available</stringProp>
+ <stringProp name="Argument.value">${product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.id</stringProp>
+ <stringProp name="Argument.value">${product.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.manufacturer.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.manufacturer.id</stringProp>
+ <stringProp name="Argument.value">${product.manufacturer.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productHeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productHeight</stringProp>
+ <stringProp name="Argument.value">${product.productHeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productLength" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productLength</stringProp>
+ <stringProp name="Argument.value">${product.productLength}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productVirtual" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productVirtual</stringProp>
+ <stringProp name="Argument.value">${product.productVirtual}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWeight</stringProp>
+ <stringProp name="Argument.value">${product.productWeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWidth" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWidth</stringProp>
+ <stringProp name="Argument.value">${product.productWidth}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sku" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sku</stringProp>
+ <stringProp name="Argument.value">${product.sku}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sortOrder" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sortOrder</stringProp>
+ <stringProp name="Argument.value">${product.sortOrder}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.taxClass.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.taxClass.id</stringProp>
+ <stringProp name="Argument.value">${product.taxClass.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.type.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.type.id</stringProp>
+ <stringProp name="Argument.value">${product.type.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productImage.productImage" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productImage.productImage</stringProp>
+ <stringProp name="Argument.value">${productImage.productImage}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productPrice" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productPrice</stringProp>
+ <stringProp name="Argument.value">${productPrice}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/save.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">random data is generated on server, these params are useless but required</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((1000000 - 2000) + 1) + 2000;
+int da = rand.nextInt((28 - 1) + 1) + 1;
+int man = rand.nextInt((200 - 1) + 1) + 1;
+
+vars.put("_product.productShipeable","on");
+vars.put("product.id","");
+vars.put("_product.available","on");
+vars.put("availability.productQuantity",Integer.toString(da));
+vars.put("availability.productQuantityOrderMin","0");
+vars.put("availability.productQuantityOrderMax","0");
+vars.put("availability.region","*");
+vars.put("dateAvailable","2016-10-" + da);
+vars.put("product.productShipeable","true");
+vars.put("_product.productShipeable","on");
+vars.put("availability.id","");
+vars.put("price.id","");
+vars.put("product.productVirtual","false");
+vars.put("product.productWeight","");
+vars.put("product.productHeight","");
+vars.put("product.productWidth","");
+vars.put("product.productLength","");
+vars.put("product.sortOrder","0");
+vars.put("image","");
+vars.put("productImage.productImage","");
+vars.put("product.taxClass.id","1");
+vars.put("descriptions[0].description","<p>random" + id + "</p>");
+vars.put("descriptions[0].id","");
+vars.put("descriptions[0].language.code","en");
+vars.put("descriptions[0].language.id","1");
+vars.put("descriptions[0].metatagDescription","product" + id);
+vars.put("descriptions[0].metatagKeywords","");
+vars.put("descriptions[0].metatagTitle","product" + id);
+vars.put("descriptions[0].name","product" + id);
+vars.put("descriptions[0].productExternalDl","");
+vars.put("descriptions[0].productHighlight","product" + id);
+vars.put("descriptions[0].seUrl","product" + id);
+vars.put("product.available","true");
+vars.put("product.manufacturer.id","1");
+vars.put("product.sku","product" + id);
+vars.put("product.type.id","1");
+vars.put("productPrice","50.00");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryhIJnvIaHZzAtMcMU</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/createProduct.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">298.0</stringProp>
+ <stringProp name="ConstantTimer.delay">596.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/edit" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="displayProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/displayProductToCategories.html?id=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((2000) + 1);
+
+vars.put("PRODUCT_ID",Integer.toString(id));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/save.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">428.0</stringProp>
+ <stringProp name="ConstantTimer.delay">856.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="product-categories/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/product-categories/paging.html?productId=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1634.4</stringProp>
+ <stringProp name="ConstantTimer.delay">3268.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/addProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">id</stringProp>
+ <stringProp name="Argument.value">4</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productId</stringProp>
+ <stringProp name="Argument.value">${PRODUCT_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/addProductToCategories.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundary1Vpb3naPvzIC1lA3</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">787.6</stringProp>
+ <stringProp name="ConstantTimer.delay">1575.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
+ <boolProp name="clearEachIteration">false</boolProp>
+ <boolProp name="useExpires">false</boolProp>
+ <boolProp name="CacheManager.controlledByThread">false</boolProp>
+ </CacheManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="false">
+ <collectionProp name="CookieManager.cookies"/>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">1</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1476966448000</longProp>
+ <longProp name="ThreadGroup.end_time">1476966448000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability2" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 1100, // category
+ 100, // add product to shop cart
+ 25, // buy
+ 75, //checkout
+ 30, // order
+ 82, //customer-registration
+ 125, // shoppingCart
+ 1200, // search
+ 1000, //login
+ 100, //logout
+ //9, // add product
+};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] buy-confirm" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] ccTypes = {
+ "Visa",
+ "MasterCard",
+ "Discover",
+ "Amex",
+ "Diners"
+};
+
+String[] shippingTypes = {
+ "AIR",
+ "UPS",
+ "FEDEX",
+ "SHIP",
+ "COURIER",
+ "MAIL"
+};
+
+int min = 0;
+int max = ccTypes.length -1;
+
+ccType = ccTypes[rand.nextInt((max - min) + 1) + min];
+
+max = shippingTypes.length-1;
+
+shipping = shippingTypes[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_CC_TYPE", ccType);
+vars.put("RAND_SHIPPING", shipping);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {"computer-books","technology","the-web","fiction","business","cloud-computing","novels"};
+
+//String[] subjects = {"ARTS","BIOGRAPHIES","BUSINESS","CHILDREN","COMPUTERS","COOKING","HEALTH","HISTORY","HOME","HUMOR","LITERATURE","MYSTERY","NON-FICTION","PARENTING","POLITICS","REFERENCE","RELIGION","ROMANCE","SELF-HELP","SCIENCE-NATURE","SCIENCE-FICTION","SPORTS","YOUTH","TRAVEL"};
+
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);
+vars.put("billing.country", "CA");
+vars.put("billing.zone", "QC");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random searchField" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+
+String[] searchFields = {
+ "author",
+ "title",
+ "subject"
+};
+
+min = 0;
+max = searchFields.length -1;
+
+searchField = searchFields[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SEARCHFIELD", searchField);</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random quantity" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 4;
+min = 1;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("QUANTITY", Integer.toString(price));
+vars.put("customer.delivery.country","CA");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random buy" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("_shipToBillingAdress","on");
+vars.put("customer.billing.address","customer" + id);
+vars.put("customer.billing.city","customer" + id);
+vars.put("customer.billing.company","customer" + id);
+vars.put("customer.billing.country","CA");
+vars.put("customer.billing.firstName","customer" + id);
+vars.put("customer.billing.lastName","customer" + id);
+vars.put("customer.billing.phone","(123)123-1231");
+vars.put("customer.billing.postalCode","H2H2H2");
+vars.put("customer.billing.stateProvince","");
+vars.put("customer.billing.zone","QC");
+vars.put("customer.delivery.address","");
+vars.put("customer.delivery.city","");
+vars.put("customer.delivery.company","");
+vars.put("customer.delivery.country","CA");
+vars.put("customer.delivery.firstName","");
+vars.put("customer.delivery.lastName","");
+vars.put("customer.delivery.postalCode","H2H2H2");
+vars.put("customer.delivery.stateProvince","");
+vars.put("customer.delivery.zone","QC");
+vars.put("customer.emailAddress","asdhjk2a@asdlkjaskl.com");
+vars.put("paymentMethodType","MONEYORDER");
+vars.put("paymentModule","moneyorder");
+vars.put("shipToBillingAdress","true");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID}}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT"></stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/checkout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/checkout.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="" elementType="Header">
+ <stringProp name="Header.name">test</stringProp>
+ <stringProp name="Header.value">${CART_CODE}</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">localhost</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/commitOrder" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_shipToBillingAdress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${_shipToBillingAdress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">_shipToBillingAdress</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.address" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.address}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.address</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.city}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.city</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.company" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.company}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.company</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.country</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.firstName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.firstName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.firstName</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.lastName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.lastName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.lastName</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.phone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.phone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.phone</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.postalCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.postalCode}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.postalCode</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.stateProvince" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.stateProvince}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.stateProvince</stringProp>
+ </elementProp>
+ <elementProp name="customer.billing.zone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.billing.zone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.billing.zone</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.address" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.address}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.address</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.city" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.city}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.city</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.company" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.company}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.company</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.country</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.firstName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.firstName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.firstName</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.lastName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.lastName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.lastName</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.postalCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.postalCode}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.postalCode</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.stateProvince" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.stateProvince}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.stateProvince</stringProp>
+ </elementProp>
+ <elementProp name="customer.delivery.zone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.delivery.zone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.delivery.zone</stringProp>
+ </elementProp>
+ <elementProp name="customer.emailAddress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${customer.emailAddress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">customer.emailAddress</stringProp>
+ </elementProp>
+ <elementProp name="paymentMethodType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${paymentMethodType}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">paymentMethodType</stringProp>
+ </elementProp>
+ <elementProp name="paymentModule" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${paymentModule}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">paymentModule</stringProp>
+ </elementProp>
+ <elementProp name="shipToBillingAdress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.value">${shipToBillingAdress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ <stringProp name="Argument.name">shipToBillingAdress</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/commitOrder.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryutul361rMswzcxJf</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">localhost</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "lala2"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/login" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="storeCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">storeCode</stringProp>
+ <stringProp name="Argument.value">DEFAULT</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/logon.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 1;
+max = 400;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="false">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME","customer");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "customer"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/login" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="storeCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">storeCode</stringProp>
+ <stringProp name="Argument.value">DEFAULT</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/logon.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 1;
+max = 400;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="false">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME","customer");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Shopizer Admin" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">1</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1363247040000</longProp>
+ <longProp name="ThreadGroup.end_time">1363247040000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration">0</stringProp>
+ <stringProp name="ThreadGroup.delay">0</stringProp>
+ <stringProp name="TestPlan.comments">Edits and adds a product</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Add product" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="orders/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/orders/paging.html?_endRow=10</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1208.4</stringProp>
+ <stringProp name="ConstantTimer.delay">2416.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/products.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">397.6</stringProp>
+ <stringProp name="ConstantTimer.delay">795.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/createProduct" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/createProduct.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/products.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">703.2</stringProp>
+ <stringProp name="ConstantTimer.delay">1406.4</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/save" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.available</stringProp>
+ <stringProp name="Argument.value">${_product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${_product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.id</stringProp>
+ <stringProp name="Argument.value">${availability.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantity" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantity</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantity}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMax" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMax</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMax}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMin" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMin</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMin}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.region" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.region</stringProp>
+ <stringProp name="Argument.value">${availability.region}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="dateAvailable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">dateAvailable</stringProp>
+ <stringProp name="Argument.value">${dateAvailable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].description" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].description</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].description}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.code" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.code</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.code}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagDescription" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagDescription</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagDescription}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagKeywords" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagKeywords</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagKeywords}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagTitle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagTitle</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagTitle}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].name" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].name</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].name}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productExternalDl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productExternalDl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productExternalDl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productHighlight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productHighlight</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productHighlight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].seUrl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].seUrl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].seUrl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="image" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">image</stringProp>
+ <stringProp name="Argument.value">${image}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="price.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">price.id</stringProp>
+ <stringProp name="Argument.value">${price.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.available</stringProp>
+ <stringProp name="Argument.value">${product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.id</stringProp>
+ <stringProp name="Argument.value">${product.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.manufacturer.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.manufacturer.id</stringProp>
+ <stringProp name="Argument.value">${product.manufacturer.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productHeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productHeight</stringProp>
+ <stringProp name="Argument.value">${product.productHeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productLength" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productLength</stringProp>
+ <stringProp name="Argument.value">${product.productLength}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productVirtual" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productVirtual</stringProp>
+ <stringProp name="Argument.value">${product.productVirtual}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWeight</stringProp>
+ <stringProp name="Argument.value">${product.productWeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWidth" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWidth</stringProp>
+ <stringProp name="Argument.value">${product.productWidth}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sku" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sku</stringProp>
+ <stringProp name="Argument.value">${product.sku}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sortOrder" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sortOrder</stringProp>
+ <stringProp name="Argument.value">${product.sortOrder}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.taxClass.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.taxClass.id</stringProp>
+ <stringProp name="Argument.value">${product.taxClass.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.type.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.type.id</stringProp>
+ <stringProp name="Argument.value">${product.type.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productImage.productImage" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productImage.productImage</stringProp>
+ <stringProp name="Argument.value">${productImage.productImage}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productPrice" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productPrice</stringProp>
+ <stringProp name="Argument.value">${productPrice}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/save.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">random data is generated on server, these params are useless but required</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((1000000 - 2000) + 1) + 2000;
+int da = rand.nextInt((28 - 1) + 1) + 1;
+int man = rand.nextInt((200 - 1) + 1) + 1;
+
+vars.put("_product.productShipeable","on");
+vars.put("product.id","");
+vars.put("_product.available","on");
+vars.put("availability.productQuantity",Integer.toString(da));
+vars.put("availability.productQuantityOrderMin","0");
+vars.put("availability.productQuantityOrderMax","0");
+vars.put("availability.region","*");
+vars.put("dateAvailable","2016-10-" + da);
+vars.put("product.productShipeable","true");
+vars.put("_product.productShipeable","on");
+vars.put("availability.id","");
+vars.put("price.id","");
+vars.put("product.productVirtual","false");
+vars.put("product.productWeight","");
+vars.put("product.productHeight","");
+vars.put("product.productWidth","");
+vars.put("product.productLength","");
+vars.put("product.sortOrder","0");
+vars.put("image","");
+vars.put("productImage.productImage","");
+vars.put("product.taxClass.id","1");
+vars.put("descriptions[0].description","<p>random" + id + "</p>");
+vars.put("descriptions[0].id","");
+vars.put("descriptions[0].language.code","en");
+vars.put("descriptions[0].language.id","1");
+vars.put("descriptions[0].metatagDescription","product" + id);
+vars.put("descriptions[0].metatagKeywords","");
+vars.put("descriptions[0].metatagTitle","product" + id);
+vars.put("descriptions[0].name","product" + id);
+vars.put("descriptions[0].productExternalDl","");
+vars.put("descriptions[0].productHighlight","product" + id);
+vars.put("descriptions[0].seUrl","product" + id);
+vars.put("product.available","true");
+vars.put("product.manufacturer.id","1");
+vars.put("product.sku","product" + id);
+vars.put("product.type.id","1");
+vars.put("productPrice","50.00");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryhIJnvIaHZzAtMcMU</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/createProduct.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">298.0</stringProp>
+ <stringProp name="ConstantTimer.delay">596.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Edit product" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="displayProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/displayProductToCategories.html?id=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((2000) + 1);
+
+vars.put("PRODUCT_ID",Integer.toString(id));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/save.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">428.0</stringProp>
+ <stringProp name="ConstantTimer.delay">856.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="product-categories/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/product-categories/paging.html?productId=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1634.4</stringProp>
+ <stringProp name="ConstantTimer.delay">3268.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/addProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">id</stringProp>
+ <stringProp name="Argument.value">4</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productId</stringProp>
+ <stringProp name="Argument.value">${PRODUCT_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/addProductToCategories.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundary1Vpb3naPvzIC1lA3</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">787.6</stringProp>
+ <stringProp name="ConstantTimer.delay">1575.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">0</stringProp>
+ <stringProp name="RandomTimer.range">100.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename">response-times-over-time.csv</stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="false">
+ <collectionProp name="AuthManager.auth_list"/>
+ <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp>
+ </AuthManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="false">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="JSESSIONID" elementType="Cookie" testname="JSESSIONID">
+ <stringProp name="Cookie.value">5606467C96C31E28293ABA289F19F7FF</stringProp>
+ <stringProp name="Cookie.domain"></stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="false">
+ <boolProp name="clearEachIteration">true</boolProp>
+ <boolProp name="useExpires">false</boolProp>
+ <boolProp name="CacheManager.controlledByThread">false</boolProp>
+ </CacheManager>
+ <hashTree/>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads random transitions" enabled="false">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOP_COUNT}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] random switch" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 2100, // category
+ 200, //add item
+ 75, //checkout
+ 69, // commit-order
+ 82, //customer-registration
+ 125, // shopping-cart
+ 2100, // search-result
+ 1100, // login
+ 200, // logout
+ 10, // admin add
+ 5, //admin edit
+ //1200, // search-request
+};
+
+//int[] browsingMix = {
+// 2100, //home
+// 200, // product-detail
+// 75, // category
+// 69, //add item
+// 82, //checkout
+// 125, // commit-order
+// 2100, //customer-registration
+// 1100, // shopping-cart
+// 200, // search-result
+// 10, // login
+// 5, // logout
+// 2900, // admin add
+// 2100, //admin edit
+// //1200, // search-request
+//};
+//
+//int[] browsingMix = {
+// 75, //home
+// 69, // product-detail
+// 82, // category
+// 125, //add item
+// 2100, //checkout
+// 1100, // commit-order
+// 200, //customer-registration
+// 10, // shopping-cart
+// 5, // search-result
+// 2900, // login
+// 2100, // logout
+// 2100, // admin add
+// 200, //admin edit
+// //1200, // search-request
+//};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {"computer-books","technology","the-web","fiction","business","cloud-computing","novels"};
+
+//String[] subjects = {"ARTS","BIOGRAPHIES","BUSINESS","CHILDREN","COMPUTERS","COOKING","HEALTH","HISTORY","HOME","HUMOR","LITERATURE","MYSTERY","NON-FICTION","PARENTING","POLITICS","REFERENCE","RELIGION","ROMANCE","SELF-HELP","SCIENCE-NATURE","SCIENCE-FICTION","SPORTS","YOUTH","TRAVEL"};
+
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);
+vars.put("billing.country", "CA");
+vars.put("billing.zone", "QC");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random quantity" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 4;
+min = 1;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("QUANTITY", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product/Description${ITEM_ID}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">details of a product</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/category" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/category" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/category/${RAND_SUBJECT}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/addShoppingCartItem" enabled="true"/>
+ <hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add with code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID}}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add without code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID},"code":"${CART_CODE}"}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/checkout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shoppingCartCode" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/displayMiniCartByCode.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/checkout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/checkout.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/commitOrder" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random buy" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("_shipToBillingAdress","on");
+vars.put("customer.billing.address","customer" + id);
+vars.put("customer.billing.city","customer" + id);
+vars.put("customer.billing.company","customer" + id);
+vars.put("customer.billing.country","CA");
+vars.put("customer.billing.firstName","customer" + id);
+vars.put("customer.billing.lastName","customer" + id);
+vars.put("customer.billing.phone","(123)123-1231");
+vars.put("customer.billing.postalCode","H2H2H2");
+vars.put("customer.billing.stateProvince","");
+vars.put("customer.billing.zone","QC");
+vars.put("customer.delivery.address","");
+vars.put("customer.delivery.city","");
+vars.put("customer.delivery.company","");
+vars.put("customer.delivery.country","CA");
+vars.put("customer.delivery.firstName","");
+vars.put("customer.delivery.lastName","");
+vars.put("customer.delivery.postalCode","H2H2H2");
+vars.put("customer.delivery.stateProvince","");
+vars.put("customer.delivery.zone","QC");
+vars.put("customer.emailAddress","asdhjk2a@asdlkjaskl.com");
+vars.put("paymentMethodType","MONEYORDER");
+vars.put("paymentModule","moneyorder");
+vars.put("shipToBillingAdress","true");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/commitOrder" enabled="true">
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.firstName"
+
+${customer.billing.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.lastName"
+
+${customer.billing.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.emailAddress"
+
+${customer.emailAddress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.company"
+
+${customer.billing.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.address"
+
+${customer.billing.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.city"
+
+${customer.billing.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.postalCode"
+
+${customer.billing.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.zone"
+
+${customer.billing.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.stateProvince"
+
+${customer.billing.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.country"
+
+${customer.billing.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.phone"
+
+${customer.billing.phone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="shipToBillingAdress"
+
+${shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="_shipToBillingAdress"
+
+${_shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.firstName"
+
+${customer.delivery.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.lastName"
+
+${customer.delivery.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.company"
+
+${customer.delivery.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.address"
+
+${customer.delivery.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.city"
+
+${customer.delivery.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.postalCode"
+
+${customer.delivery.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.zone"
+
+${customer.delivery.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.stateProvince"
+
+${customer.delivery.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.country"
+
+${customer.delivery.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentMethodType"
+
+${paymentMethodType}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentModule"
+
+${paymentModule}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5--</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/commitOrder.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryutul361rMswzcxJf</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CART_CODE","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/confirmation" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/confirmation.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order" enabled="false"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/orders" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/orders.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/dashboard.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ORDER_ID" enabled="false">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+vars.put("ORDER_ID","none");
+String patternString = "orderId=([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+//print(ids);
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ORDER_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">ORDER_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">orderId=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">none</stringProp>
+ <stringProp name="RegexExtractor.match_number">1</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${ORDER_ID}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/order.html?orderId=${ORDER_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/orders.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="register if" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random customer" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("billing.country", "CA");
+vars.put("billing.firstName", "customer" + id);
+vars.put("billing.lastName", "customer" + id);
+vars.put("billing.stateProvince", "");
+vars.put("billing.zone", "QC");
+vars.put("checkPassword", "customer" + id);
+vars.put("emailAddress", "customer" + id + "@shopizer.com");
+vars.put("gender", "M");
+vars.put("password", "customer" + id);
+vars.put("recaptcha_challenge_field", "03AHJ_Vuu60YpLxvrEZXbeT9av_dgxQE2j0ePMCYmY4TSklsHNQ0ZI6JoEUc4lh-BUQ3lMhH1-tzu1norevG6CJtx9gqKl_t4rkSbOBM7ps6IYXog-0v52_IaVbac00y9Gt2mWdAimF9TWPab7RiSaI3xldM0AjdZnJCw3574q7KxwebHiaMDWALh1yl6D9hOBx0M3ZAfe384PrNQplEd9F8iCQkEoWkLB3Q");
+vars.put("recaptcha_response_field", "customer" + id);
+vars.put("register", "Register");
+vars.put("userName", "customer" + id);
+
+vars.put("NEW_CUSTOMER_ID", Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + id);
+
+</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="customer/register" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="billing.country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.country</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.firstName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.firstName</stringProp>
+ <stringProp name="Argument.value">${billing.firstName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.lastName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.lastName</stringProp>
+ <stringProp name="Argument.value">${billing.lastName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.stateProvince" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.stateProvince</stringProp>
+ <stringProp name="Argument.value">${billing.stateProvince}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.zone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.zone</stringProp>
+ <stringProp name="Argument.value">${billing.zone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="checkPassword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">checkPassword</stringProp>
+ <stringProp name="Argument.value">${checkPassword}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="emailAddress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">emailAddress</stringProp>
+ <stringProp name="Argument.value">${emailAddress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="gender" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">gender</stringProp>
+ <stringProp name="Argument.value">${gender}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${password}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_challenge_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_challenge_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_challenge_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_response_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_response_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_response_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="register" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">register</stringProp>
+ <stringProp name="Argument.value">${register}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${userName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/register.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_ID", vars.get("NEW_CUSTOMER_ID"));
+vars.put("CUSTOMER_NAME", vars.get("NEW_CUSTOMER_NAME"));</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shoppingCart" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shoppingCart" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/shoppingCart.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="q" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">q</stringProp>
+ <stringProp name="Argument.value">asdas</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search/search.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/login" enabled="true"/>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/login" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="storeCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">storeCode</stringProp>
+ <stringProp name="Argument.value">DEFAULT</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/logon.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("CUSTOMER_NAME","customer" + Integer.toString(id));
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] NEW CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+price = Integer.toString(rand.nextInt((max - min) + 1) + min);
+
+vars.put("CUSTOMER_NAME","customer" + price);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/logout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/logout if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME", null);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/add" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="orders/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/orders/paging.html?_endRow=10</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1208.4</stringProp>
+ <stringProp name="ConstantTimer.delay">2416.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/products.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">397.6</stringProp>
+ <stringProp name="ConstantTimer.delay">795.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/createProduct" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/createProduct.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/products.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">703.2</stringProp>
+ <stringProp name="ConstantTimer.delay">1406.4</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/save" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.available</stringProp>
+ <stringProp name="Argument.value">${_product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${_product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.id</stringProp>
+ <stringProp name="Argument.value">${availability.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantity" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantity</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantity}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMax" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMax</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMax}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMin" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMin</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMin}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.region" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.region</stringProp>
+ <stringProp name="Argument.value">${availability.region}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="dateAvailable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">dateAvailable</stringProp>
+ <stringProp name="Argument.value">${dateAvailable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].description" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].description</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].description}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.code" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.code</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.code}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagDescription" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagDescription</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagDescription}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagKeywords" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagKeywords</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagKeywords}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagTitle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagTitle</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagTitle}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].name" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].name</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].name}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productExternalDl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productExternalDl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productExternalDl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productHighlight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productHighlight</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productHighlight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].seUrl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].seUrl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].seUrl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="image" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">image</stringProp>
+ <stringProp name="Argument.value">${image}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="price.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">price.id</stringProp>
+ <stringProp name="Argument.value">${price.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.available</stringProp>
+ <stringProp name="Argument.value">${product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.id</stringProp>
+ <stringProp name="Argument.value">${product.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.manufacturer.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.manufacturer.id</stringProp>
+ <stringProp name="Argument.value">${product.manufacturer.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productHeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productHeight</stringProp>
+ <stringProp name="Argument.value">${product.productHeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productLength" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productLength</stringProp>
+ <stringProp name="Argument.value">${product.productLength}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productVirtual" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productVirtual</stringProp>
+ <stringProp name="Argument.value">${product.productVirtual}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWeight</stringProp>
+ <stringProp name="Argument.value">${product.productWeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWidth" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWidth</stringProp>
+ <stringProp name="Argument.value">${product.productWidth}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sku" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sku</stringProp>
+ <stringProp name="Argument.value">${product.sku}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sortOrder" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sortOrder</stringProp>
+ <stringProp name="Argument.value">${product.sortOrder}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.taxClass.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.taxClass.id</stringProp>
+ <stringProp name="Argument.value">${product.taxClass.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.type.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.type.id</stringProp>
+ <stringProp name="Argument.value">${product.type.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productImage.productImage" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productImage.productImage</stringProp>
+ <stringProp name="Argument.value">${productImage.productImage}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productPrice" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productPrice</stringProp>
+ <stringProp name="Argument.value">${productPrice}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/save.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">random data is generated on server, these params are useless but required</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((1000000 - 2000) + 1) + 2000;
+int da = rand.nextInt((28 - 1) + 1) + 1;
+int man = rand.nextInt((200 - 1) + 1) + 1;
+
+vars.put("_product.productShipeable","on");
+vars.put("product.id","");
+vars.put("_product.available","on");
+vars.put("availability.productQuantity",Integer.toString(da));
+vars.put("availability.productQuantityOrderMin","0");
+vars.put("availability.productQuantityOrderMax","0");
+vars.put("availability.region","*");
+vars.put("dateAvailable","2016-10-" + da);
+vars.put("product.productShipeable","true");
+vars.put("_product.productShipeable","on");
+vars.put("availability.id","");
+vars.put("price.id","");
+vars.put("product.productVirtual","false");
+vars.put("product.productWeight","");
+vars.put("product.productHeight","");
+vars.put("product.productWidth","");
+vars.put("product.productLength","");
+vars.put("product.sortOrder","0");
+vars.put("image","");
+vars.put("productImage.productImage","");
+vars.put("product.taxClass.id","1");
+vars.put("descriptions[0].description","<p>random" + id + "</p>");
+vars.put("descriptions[0].id","");
+vars.put("descriptions[0].language.code","en");
+vars.put("descriptions[0].language.id","1");
+vars.put("descriptions[0].metatagDescription","product" + id);
+vars.put("descriptions[0].metatagKeywords","");
+vars.put("descriptions[0].metatagTitle","product" + id);
+vars.put("descriptions[0].name","product" + id);
+vars.put("descriptions[0].productExternalDl","");
+vars.put("descriptions[0].productHighlight","product" + id);
+vars.put("descriptions[0].seUrl","product" + id);
+vars.put("product.available","true");
+vars.put("product.manufacturer.id","1");
+vars.put("product.sku","product" + id);
+vars.put("product.type.id","1");
+vars.put("productPrice","50.00");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryhIJnvIaHZzAtMcMU</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/createProduct.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">298.0</stringProp>
+ <stringProp name="ConstantTimer.delay">596.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/edit" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="displayProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/displayProductToCategories.html?id=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((2000) + 1);
+
+vars.put("PRODUCT_ID",Integer.toString(id));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/save.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">428.0</stringProp>
+ <stringProp name="ConstantTimer.delay">856.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="product-categories/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/product-categories/paging.html?productId=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1634.4</stringProp>
+ <stringProp name="ConstantTimer.delay">3268.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/addProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">id</stringProp>
+ <stringProp name="Argument.value">4</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productId</stringProp>
+ <stringProp name="Argument.value">${PRODUCT_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/addProductToCategories.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundary1Vpb3naPvzIC1lA3</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">787.6</stringProp>
+ <stringProp name="ConstantTimer.delay">1575.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="false">
+ <boolProp name="clearEachIteration">false</boolProp>
+ <boolProp name="useExpires">false</boolProp>
+ <boolProp name="CacheManager.controlledByThread">false</boolProp>
+ </CacheManager>
+ <hashTree/>
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Thinking Gaussian Random Timer" enabled="false">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ <stringProp name="RandomTimer.range">7000</stringProp>
+ </GaussianRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels">Debug Sampler</stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Active Threads Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.reporters.FlexibleFileWriter guiclass="kg.apc.jmeter.reporters.FlexibleFileWriterGui" testclass="kg.apc.jmeter.reporters.FlexibleFileWriter" testname="jp@gc - Flexible File Writer" enabled="false">
+ <stringProp name="filename">testResults.txt</stringProp>
+ <stringProp name="columns">endTimeMillis|\t|responseTime|\t|latency|\t|sentBytes|\t|receivedBytes|\t|isSuccessful|\t|responseCode|\r\n</stringProp>
+ <boolProp name="overwrite">false</boolProp>
+ <stringProp name="header">endTimeMillis responseTime latency sentBytes receivedBytes isSuccessful responseCode
+</stringProp>
+ <stringProp name="footer"></stringProp>
+ </kg.apc.jmeter.reporters.FlexibleFileWriter>
+ <hashTree/>
+ </hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="User threads with adaptive workload" enabled="true">
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Contr�leur Boucle" enabled="true">
+ <boolProp name="LoopController.continue_forever">false</boolProp>
+ <stringProp name="LoopController.loops">${NUM_LOOP_COUNT}</stringProp>
+ </elementProp>
+ <stringProp name="ThreadGroup.num_threads">${NUM_USERS_SIMULATED}</stringProp>
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
+ <longProp name="ThreadGroup.start_time">1361531541000</longProp>
+ <longProp name="ThreadGroup.end_time">1361531541000</longProp>
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
+ <stringProp name="ThreadGroup.duration"></stringProp>
+ <stringProp name="ThreadGroup.delay"></stringProp>
+ <stringProp name="TestPlan.comments">Original : 500 - 10 - 10</stringProp>
+ <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+ </ThreadGroup>
+ <hashTree>
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Start timer" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random
+
+SampleResult.setIgnore();
+
+log.info("USER: " + ctx.getThreadNum());
+
+ctx.getThread().setStartTime(System.currentTimeMillis())
+
+rand = new Random();
+vars.putObject("RANDOM", rand);
+
+String Filename = vars.get("WORKLOAD_FILE");
+String fileContents = new File(Filename).getText('UTF-8');
+def lines = 0;
+ fileContents.eachLine { line ->
+ int[] runningIntervals = Arrays.stream(line.replace("[","").replace("]","").replaceAll(" ","").split(",")).mapToInt(Integer::parseInt).toArray();
+ log.info("Workload Loaded:" + runningIntervals);
+ vars.putObject("WORKLOAD_USER_" + lines, runningIntervals);
+ lines++;
+ }
+vars.put("WORKLOAD_FILE_LENGTH",lines.toString());</stringProp>
+ <stringProp name="scriptLanguage">groovy</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ </hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] random switch" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = vars.getObject("RANDOM");
+if(rand == null)
+{
+ rand = new Random();
+ vars.putObject("RANDOM", rand);
+}
+
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 2100, // category
+ 200, //add item
+ 75, //checkout
+ 69, // commit-order
+ 82, //customer-registration
+ 125, // shopping-cart
+ 2100, // search-result
+ 1100, // login
+ 200, // logout
+ 10, // admin add
+ 5, //admin edit
+ //1200, // search-request
+};
+
+//int[] browsingMix = {
+// 2100, //home
+// 200, // product-detail
+// 75, // category
+// 69, //add item
+// 82, //checkout
+// 125, // commit-order
+// 2100, //customer-registration
+// 1100, // shopping-cart
+// 200, // search-result
+// 10, // login
+// 5, // logout
+// 2900, // admin add
+// 2100, //admin edit
+// //1200, // search-request
+//};
+//
+//int[] browsingMix = {
+// 75, //home
+// 69, // product-detail
+// 82, // category
+// 125, //add item
+// 2100, //checkout
+// 1100, // commit-order
+// 200, //customer-registration
+// 10, // shopping-cart
+// 5, // search-result
+// 2900, // login
+// 2100, // logout
+// 2100, // admin add
+// 200, //admin edit
+// //1200, // search-request
+//};
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="Transition table" enabled="true">
+ <stringProp name="cacheKey">true</stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+SampleResult.setIgnore();
+
+Random rand = vars.getObject("RANDOM");
+
+long started = ctx.getThread().getStartTime();
+long millis = (System.currentTimeMillis() - started);
+long minutes = (millis / 1000) / 60;
+int seconds = (int)((millis / 1000) % 60);
+
+// instant, workload mix
+int[] runningIntervals = vars.getObject("WORKLOAD_USER_" + ctx.getThreadNum());
+
+log.info("Workload Loaded:" + ctx.getThreadNum());
+
+// do not do anything while not authorized to do so
+if (runningIntervals[seconds] < 1){
+ vars.putObject("ACT", false);
+ return;
+} else {
+ vars.putObject("ACT", true);
+}
+
+//if(runningIntervals[seconds] == 1) {
+int[] browsingMix = {
+ 2900, //home
+ 2100, // product-detail
+ 2100, // category
+ 200, //add item
+ 75, //checkout
+ 69, // commit-order
+ 82, //customer-registration
+ 125, // shopping-cart
+ 2100, // search-result
+ 1100, // login
+ 200, // logout
+ 10, // admin add
+ 5, //admin edit
+ //1200, // search-request
+};
+
+if(runningIntervals[seconds] == 2) {
+ browsingMix[0] = 2100; //home
+ browsingMix[1] = 200; // product-detail
+ browsingMix[2] = 75; // category
+ browsingMix[3] = 69; //add item
+ //25, // order-display
+ browsingMix[4] = 82; //checkout
+ browsingMix[5] = 125; // commit-order
+ browsingMix[6] = 2100; //customer-registration
+ browsingMix[7] = 1100; // shopping-cart
+ browsingMix[8] = 200; // search-result
+ browsingMix[9] = 10; // login
+ browsingMix[10] = 5; // logout
+ browsingMix[11] = 2900; // admin add
+ browsingMix[12] = 2100; //admin edit
+ //1200, // search-request
+}
+
+if(runningIntervals[seconds] == 3) {
+ browsingMix[0] = 75; //home
+ browsingMix[1] = 69; // product-detail
+ browsingMix[2] = 82; // category
+ browsingMix[3] = 125; //add item
+ //25, // order-display
+ browsingMix[4] = 2100; //checkout
+ browsingMix[5] = 1100; // commit-order
+ browsingMix[6] = 200; //customer-registration
+ browsingMix[7] = 10; // shopping-cart
+ browsingMix[8] = 5; // search-result
+ browsingMix[9] = 10; // login
+ browsingMix[10] = 2900; // logout
+ browsingMix[11] = 2100; // admin add
+ browsingMix[12] = 200; //admin edit
+ //1200, // search-request
+}
+
+int probSum = 0;
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ probSum += browsingMix[i];
+}
+
+int[] range = new int[2 * browsingMix.length];
+
+for( int i=0; i < browsingMix.length; i++)
+{
+ int sum = 0;
+ for( int j=0; j<i; j++)
+ {
+ sum += browsingMix[j];
+ }
+
+ range[i] = sum;
+ range[i+1] = range[i] + browsingMix[i];
+}
+
+int randNum = rand.nextInt(probSum);
+
+for(int i=0; i < browsingMix.length; i++)
+{
+ if( randNum >= range[i] && randNum < range[i+1] )
+ {
+ vars.put("SWITCH_ID", String.valueOf(i));
+ return;
+ }
+}
+</stringProp>
+ <stringProp name="scriptLanguage">beanshell</stringProp>
+ </JSR223Sampler>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Tresholds" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">int ADMIN_CONFIRM = 0;
+int ADMIN_REQUEST = 1;
+int BEST_SELLERS = 2;
+int BUY_CONFIRM = 3;
+int BUY_REQUEST = 4;
+int CUSTOMER_REGISTRATION = 5;
+int HOME = 6;
+int NEW_PRODUCTS = 7;
+int ORDER_DISPLAY = 8;
+int ORDER_INQUIRY = 9;
+int PRODUCT_DETAIL = 10;
+int SEARCH_REQUEST = 11;
+int SEARCH_RESULTS = 12;
+int SHOPPING_CART = 13;
+
+/*
+ * See http://www.tpc.org/tpcw/spec/tpcw_v16.pdf page 94
+ */
+int[][] tresholdsMatrix = {
+ {0, 0, 0, 0, 0, 0, 9952, 0, 0, 0, 0, 9999, 0, 0},
+ {8999, 0, 0, 0, 0, 0, 9999, 0, 0, 0, 0, 0, 0, 0},
+ {0,0,0,0,0, 0, 167, 0,0,0, 472, 9927,0,9999},
+ {0,0,0,0,0, 0, 84, 0,0,0,0,9999,0,0},
+ {0,0,0,4614,0, 0, 6546, 0,0,0,0,0,0,9999},
+ {0,0,0,0,8666, 0, 8760, 0,0,0,0,9999,0,0},
+ {0,0,3124,0,0, 0, 0, 6249,0, 6718,0,7026,0,9999},
+ {0,0,0,0,0, 0, 156, 0,0,0,9735,9784,0,9999},
+ {0,0,0,0,0, 0, 69, 0,0,0,0,9999,0,0},
+ {0,0,0,0,0, 0, 72, 0,8872,0,0,9999,0,0},
+ {0,58,0,0,0, 0, 832, 0,0,0,1288,8603,0,9999},
+ {0,0,0,0,0, 0, 635, 0,0,0,0,0,9135,9999},
+ {0,0,0,0,0, 0, 2657, 0,0,0,9294,9304,0,9999},
+ {0,0,0,0,0, 2585, 9552, 0,0,0,0,0,0,9999},
+};
+
+int nextOperation(int currentOperation)
+{
+ int newOperation = -1;
+
+ Random rand = new Random();
+ int r = 1 + rand.nextInt(9999);
+
+ for( int i = 0; i < tresholdsMatrix[currentOperation].length; i++)
+ {
+ int t = tresholdsMatrix[currentOperation][i];
+ if( r <= t)
+ return i;
+ }
+
+ return newOperation;
+}
+
+previousOperation = vars.get("OPERATION");
+newOp = nextOperation(Integer.parseInt(previousOperation));
+vars.put("OPERATION", String.valueOf(newOp));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] ITEM_ID" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+import java.util.ArrayList;
+
+prevTreshold = vars.get("TRESHOLD");
+prevSwitchId = vars.get("SWITCH_ID");
+numItems = Integer.parseInt(vars.get("NUM_ITEMS"));
+
+Random rand = new Random();
+item = 1 + rand.nextInt(numItems);
+vars.put("ITEM_ID", Integer.toString(item));
+
+treshold = 1+rand.nextInt(numItems);
+vars.put("TRESHOLD", Integer.toString(treshold));
+
+//System.out.println("Treshold1 = " + treshold);
+//System.out.println("ITEM_ID1 = " + item);
+</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] probability3" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.commons.math3.distribution.EnumeratedDistribution;
+import org.apache.commons.math3.util.Pair;
+import java.util.ArrayList;
+
+class Item
+{
+ String operation;
+ double probability;
+ int jmeterIndex;
+
+ public Item(String operation, double probability, int jmeterIndex)
+ {
+ this.operation = operation;
+ this.probability = probability;
+ this.jmeterIndex = jmeterIndex;
+ }
+}
+
+ArrayList items = new ArrayList(){{
+ add(new Item("Home", 29, 7));
+ add(new Item("New products", 11, 8));
+ add(new Item("Best Sellers", 11, 3));
+ add(new Item("Product Detail", 21, 11));
+ add(new Item("Search Request", 12, 12));
+ add(new Item("Search Results", 11, 13));
+ add(new Item("Shopping Cart", 1.25, 14));
+ add(new Item("Customer Registration", 0.82, 6));
+ add(new Item("Buy Request", 0.75, 5));
+ add(new Item("Buy Confirm", 0.69, 4));
+ add(new Item("Order Inquiry", 0.30, 10));
+ add(new Item("Order Display", 0.25, 9));
+ add(new Item("Admin Request", 0.10, 2));
+ add(new Item("Admin Confirm", 0.09, 1));
+}};
+
+ArrayList itemWeights = new ArrayList();
+for(Item i : items)
+{
+ itemWeights.add(new Pair(i, i.probability));
+}
+
+newOperation = new EnumeratedDistribution(itemWeights).sample();
+
+vars.put("SWITCH_ID", String.valueOf(newOperation.jmeterIndex));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random subject" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+String[] subjects = {"computer-books","technology","the-web","fiction","business","cloud-computing","novels"};
+
+//String[] subjects = {"ARTS","BIOGRAPHIES","BUSINESS","CHILDREN","COMPUTERS","COOKING","HEALTH","HISTORY","HOME","HUMOR","LITERATURE","MYSTERY","NON-FICTION","PARENTING","POLITICS","REFERENCE","RELIGION","ROMANCE","SELF-HELP","SCIENCE-NATURE","SCIENCE-FICTION","SPORTS","YOUTH","TRAVEL"};
+
+
+min = 0;
+max = subjects.length-1;
+
+Random rand = new Random();
+subject = subjects[rand.nextInt((max - min) + 1) + min];
+
+vars.put("RAND_SUBJECT", subject);
+vars.put("billing.country", "CA");
+vars.put("billing.zone", "QC");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random new_price" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 300;
+min = 10;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("NEW_PRICE", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random quantity" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 4;
+min = 1;
+price = rand.nextInt((max - min) + 1) + min;
+
+vars.put("QUANTITY", Integer.toString(price));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">${ACT}</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <boolProp name="IfController.useExpression">true</boolProp>
+ </IfController>
+ <hashTree>
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
+ <stringProp name="SwitchController.value">${SWITCH_ID}</stringProp>
+ </SwitchController>
+ <hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/home" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/product" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/product" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/product/Description${ITEM_ID}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">details of a product</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/category" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/category" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/category/${RAND_SUBJECT}.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/addShoppingCartItem" enabled="true"/>
+ <hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add with code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID}}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="add without code if" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/addShoppingCartItem" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">{"quantity":${QUANTITY},"productId":${ITEM_ID},"code":"${CART_CODE}"}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/addShoppingCartItem.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/checkout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shoppingCartCode" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/displayMiniCartByCode.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.gui.JSONPathExtractorGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor" testname="jp@gc - JSON Path Extractor" enabled="true">
+ <stringProp name="VAR">CART_CODE</stringProp>
+ <stringProp name="JSONPATH">$.code</stringProp>
+ <stringProp name="DEFAULT">none</stringProp>
+ <stringProp name="VARIABLE"></stringProp>
+ <stringProp name="SUBJECT">BODY</stringProp>
+ <stringProp name="INPUT_FORMAT">JSON</stringProp>
+ </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/checkout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/checkout.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/commitOrder" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CART_CODE}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random buy" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.Random;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("_shipToBillingAdress","on");
+vars.put("customer.billing.address","customer" + id);
+vars.put("customer.billing.city","customer" + id);
+vars.put("customer.billing.company","customer" + id);
+vars.put("customer.billing.country","CA");
+vars.put("customer.billing.firstName","customer" + id);
+vars.put("customer.billing.lastName","customer" + id);
+vars.put("customer.billing.phone","(123)123-1231");
+vars.put("customer.billing.postalCode","H2H2H2");
+vars.put("customer.billing.stateProvince","");
+vars.put("customer.billing.zone","QC");
+vars.put("customer.delivery.address","");
+vars.put("customer.delivery.city","");
+vars.put("customer.delivery.company","");
+vars.put("customer.delivery.country","CA");
+vars.put("customer.delivery.firstName","");
+vars.put("customer.delivery.lastName","");
+vars.put("customer.delivery.postalCode","H2H2H2");
+vars.put("customer.delivery.stateProvince","");
+vars.put("customer.delivery.zone","QC");
+vars.put("customer.emailAddress","asdhjk2a@asdlkjaskl.com");
+vars.put("paymentMethodType","MONEYORDER");
+vars.put("paymentModule","moneyorder");
+vars.put("shipToBillingAdress","true");</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/commitOrder" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp name="Argument.value">------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.firstName"
+
+${customer.billing.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.lastName"
+
+${customer.billing.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.emailAddress"
+
+${customer.emailAddress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.company"
+
+${customer.billing.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.address"
+
+${customer.billing.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.city"
+
+${customer.billing.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.postalCode"
+
+${customer.billing.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.zone"
+
+${customer.billing.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.stateProvince"
+
+${customer.billing.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.country"
+
+${customer.billing.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.billing.phone"
+
+${customer.billing.phone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="shipToBillingAdress"
+
+${shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="_shipToBillingAdress"
+
+${_shipToBillingAdress}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.firstName"
+
+${customer.delivery.firstName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.lastName"
+
+${customer.delivery.lastName}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.company"
+
+${customer.delivery.company}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.address"
+
+${customer.delivery.address}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.city"
+
+${customer.delivery.city}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.postalCode"
+
+${customer.delivery.postalCode}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.zone"
+
+${customer.delivery.zone}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.stateProvince"
+
+${customer.delivery.stateProvince}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="customer.delivery.country"
+
+${customer.delivery.country}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentMethodType"
+
+${paymentMethodType}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5
+Content-Disposition: form-data; name="paymentModule"
+
+${paymentModule}
+------WebKitFormBoundaryGKZQ8DtOL1ABbUy5--</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/commitOrder.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryutul361rMswzcxJf</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CART_CODE Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="cart" elementType="Cookie" testname="cart">
+ <stringProp name="Cookie.value">DEFAULT_${CART_CODE}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CART_CODE","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/confirmation" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/order/confirmation.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/order" enabled="false"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/orders" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/orders.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/dashboard.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ORDER_ID" enabled="false">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+vars.put("ORDER_ID","none");
+String patternString = "orderId=([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+//print(ids);
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ORDER_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+ <stringProp name="RegexExtractor.refname">ORDER_ID</stringProp>
+ <stringProp name="RegexExtractor.regex">orderId=([0-9]+)</stringProp>
+ <stringProp name="RegexExtractor.template">$1$</stringProp>
+ <stringProp name="RegexExtractor.default">none</stringProp>
+ <stringProp name="RegexExtractor.match_number">1</stringProp>
+ </RegexExtractor>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
+ <stringProp name="IfController.condition">"${ORDER_ID}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/order" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/order.html?orderId=${ORDER_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/customer/orders.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="CUSTOMER_NAME Cookie" enabled="true">
+ <collectionProp name="CookieManager.cookies">
+ <elementProp name="user" elementType="Cookie" testname="user">
+ <stringProp name="Cookie.value">DEFAULT_${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Cookie.domain">${HOST}</stringProp>
+ <stringProp name="Cookie.path"></stringProp>
+ <boolProp name="Cookie.secure">false</boolProp>
+ <longProp name="Cookie.expires">0</longProp>
+ <boolProp name="Cookie.path_specified">true</boolProp>
+ <boolProp name="Cookie.domain_specified">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+ <boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
+ </CookieManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/customer-registration" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="register if" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] Random customer" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">true</boolProp>
+ <stringProp name="script">import java.util.*;
+
+min = 2000;
+max = 1000000;
+
+Random rand = new Random();
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("billing.country", "CA");
+vars.put("billing.firstName", "customer" + id);
+vars.put("billing.lastName", "customer" + id);
+vars.put("billing.stateProvince", "");
+vars.put("billing.zone", "QC");
+vars.put("checkPassword", "customer" + id);
+vars.put("emailAddress", "customer" + id + "@shopizer.com");
+vars.put("gender", "M");
+vars.put("password", "customer" + id);
+vars.put("recaptcha_challenge_field", "03AHJ_Vuu60YpLxvrEZXbeT9av_dgxQE2j0ePMCYmY4TSklsHNQ0ZI6JoEUc4lh-BUQ3lMhH1-tzu1norevG6CJtx9gqKl_t4rkSbOBM7ps6IYXog-0v52_IaVbac00y9Gt2mWdAimF9TWPab7RiSaI3xldM0AjdZnJCw3574q7KxwebHiaMDWALh1yl6D9hOBx0M3ZAfe384PrNQplEd9F8iCQkEoWkLB3Q");
+vars.put("recaptcha_response_field", "customer" + id);
+vars.put("register", "Register");
+vars.put("userName", "customer" + id);
+
+vars.put("NEW_CUSTOMER_ID", Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + Integer.toString(id));
+vars.put("NEW_CUSTOMER_NAME", "customer" + id);
+
+</stringProp>
+ <stringProp name="TestPlan.comments">Random subject</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="customer/register" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="billing.country" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.country</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.firstName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.firstName</stringProp>
+ <stringProp name="Argument.value">${billing.firstName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.lastName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.lastName</stringProp>
+ <stringProp name="Argument.value">${billing.lastName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.stateProvince" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.stateProvince</stringProp>
+ <stringProp name="Argument.value">${billing.stateProvince}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="billing.zone" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">billing.zone</stringProp>
+ <stringProp name="Argument.value">${billing.zone}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="checkPassword" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">checkPassword</stringProp>
+ <stringProp name="Argument.value">${checkPassword}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="emailAddress" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">emailAddress</stringProp>
+ <stringProp name="Argument.value">${emailAddress}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="gender" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">gender</stringProp>
+ <stringProp name="Argument.value">${gender}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${password}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_challenge_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_challenge_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_challenge_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="recaptcha_response_field" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">recaptcha_response_field</stringProp>
+ <stringProp name="Argument.value">${recaptcha_response_field}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="register" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">register</stringProp>
+ <stringProp name="Argument.value">${register}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${userName}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/register.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_ID", vars.get("NEW_CUSTOMER_ID"));
+vars.put("CUSTOMER_NAME", vars.get("NEW_CUSTOMER_NAME"));</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/shoppingCart" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/zoneName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/zoneName?zoneCode=${billing.zone}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">221.20000000000002</stringProp>
+ <stringProp name="ConstantTimer.delay">442.40000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/countryName" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/countryName?countryCode=${billing.country}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">4.0</stringProp>
+ <stringProp name="ConstantTimer.delay">8.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/reference/provinces.html" enabled="false">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="countryCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">countryCode</stringProp>
+ <stringProp name="Argument.value">${billing.country}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="lang" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">lang</stringProp>
+ <stringProp name="Argument.value">en</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">localhost</stringProp>
+ <stringProp name="HTTPSampler.port">8080</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/reference/provinces.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">application/json,text/javascript,*/*;q=0.01</stringProp>
+ </elementProp>
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="X-DevTools-Emulate-Network-Conditions-Client-Id" elementType="Header">
+ <stringProp name="Header.name">X-DevTools-Emulate-Network-Conditions-Client-Id</stringProp>
+ <stringProp name="Header.value">8e7b8b72-d91a-4915-ad26-63fba3dad4d9</stringProp>
+ </elementProp>
+ <elementProp name="X-Requested-With" elementType="Header">
+ <stringProp name="Header.name">X-Requested-With</stringProp>
+ <stringProp name="Header.value">XMLHttpRequest</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/order/checkout.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">15.600000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">31.200000000000003</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/shoppingCart" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol"></stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/cart/shoppingCart.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree/>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/search" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/search" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="q" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">q</stringProp>
+ <stringProp name="Argument.value">asdas</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/search/search.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/cart/shoppingCart.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] get ITEM_ID" enabled="true">
+ <stringProp name="filename"></stringProp>
+ <stringProp name="parameters"></stringProp>
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="script">import java.util.regex;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Random;
+import java.util.ArrayList;
+
+String testString = prev.getResponseDataAsString();
+
+String patternString = "product/Description([0-9]+)";
+Pattern pattern = Pattern.compile(patternString);
+Matcher matcher = pattern.matcher(testString);
+
+ArrayList ids = new ArrayList();
+
+while(matcher.find())
+{
+ ids.add(matcher.group(1));
+}
+
+Random rand = new Random();
+
+if( ids.size() > 0 )
+{
+ String itemId = String.valueOf(ids.get(rand.nextInt( ids.size() ) ) );
+ vars.put("ITEM_ID", itemId);
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/login" enabled="true"/>
+ <hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
+import org.apache.jmeter.protocol.http.control.Cookie;
+
+CookieManager manager = sampler.getCookieManager();
+for (int i=0;i<manager.getCookieCount();i++){
+ Cookie cookie = manager.get(i);
+ //remove a cookie
+ if (cookie.getName().equals("cart")){
+ sampler.getCookieManager().remove(i);
+ }
+}</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/login if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" == "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should not be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/login" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">password</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="storeCode" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">storeCode</stringProp>
+ <stringProp name="Argument.value">DEFAULT</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="userName" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">userName</stringProp>
+ <stringProp name="Argument.value">${CUSTOMER_NAME}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/logon.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+int id = rand.nextInt((max - min) + 1) + min;
+
+vars.put("CUSTOMER_NAME","customer" + Integer.toString(id));
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="[BeanShell PostProcessor] NEW CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+max = 400;
+min = 1;
+price = Integer.toString(rand.nextInt((max - min) + 1) + min);
+
+vars.put("CUSTOMER_NAME","customer" + price);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="[BeanShell PreProcessor] CUSTOMER_NAME" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">
+vars.put("CUSTOMER_NAME","customer");
+//vars.put("CUSTOMER_LALALALA","123");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="false">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/logout" enabled="true"/>
+ <hashTree>
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
+ <boolProp name="displayJMeterProperties">false</boolProp>
+ <boolProp name="displayJMeterVariables">true</boolProp>
+ <boolProp name="displaySystemProperties">false</boolProp>
+ </DebugSampler>
+ <hashTree/>
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="/logout if" enabled="true">
+ <stringProp name="IfController.condition">"${CUSTOMER_NAME}" != "none"</stringProp>
+ <boolProp name="IfController.evaluateAll">false</boolProp>
+ <stringProp name="TestPlan.comments">Should be logged</stringProp>
+ </IfController>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE}/customer/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.59Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/shop/</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch,br</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME","none");</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="false">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">vars.put("CUSTOMER_NAME", null);</stringProp>
+ </BeanShellPostProcessor>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/add" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="orders/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/orders/paging.html?_endRow=10</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1208.4</stringProp>
+ <stringProp name="ConstantTimer.delay">2416.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/products" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/products.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/home.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">397.6</stringProp>
+ <stringProp name="ConstantTimer.delay">795.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/createProduct" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/createProduct.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/products.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">703.2</stringProp>
+ <stringProp name="ConstantTimer.delay">1406.4</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/save" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.available</stringProp>
+ <stringProp name="Argument.value">${_product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${_product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.id</stringProp>
+ <stringProp name="Argument.value">${availability.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantity" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantity</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantity}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMax" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMax</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMax}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.productQuantityOrderMin" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.productQuantityOrderMin</stringProp>
+ <stringProp name="Argument.value">${availability.productQuantityOrderMin}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="availability.region" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">availability.region</stringProp>
+ <stringProp name="Argument.value">${availability.region}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="dateAvailable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">dateAvailable</stringProp>
+ <stringProp name="Argument.value">${dateAvailable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].description" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].description</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].description}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.code" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.code</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.code}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].language.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].language.id</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].language.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagDescription" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagDescription</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagDescription}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagKeywords" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagKeywords</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagKeywords}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].metatagTitle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].metatagTitle</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].metatagTitle}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].name" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].name</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].name}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productExternalDl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productExternalDl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productExternalDl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].productHighlight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].productHighlight</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].productHighlight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="descriptions[0].seUrl" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">descriptions[0].seUrl</stringProp>
+ <stringProp name="Argument.value">${descriptions[0].seUrl}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="image" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">image</stringProp>
+ <stringProp name="Argument.value">${image}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="price.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">price.id</stringProp>
+ <stringProp name="Argument.value">${price.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.available" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.available</stringProp>
+ <stringProp name="Argument.value">${product.available}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.id</stringProp>
+ <stringProp name="Argument.value">${product.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.manufacturer.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.manufacturer.id</stringProp>
+ <stringProp name="Argument.value">${product.manufacturer.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productHeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productHeight</stringProp>
+ <stringProp name="Argument.value">${product.productHeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productLength" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productLength</stringProp>
+ <stringProp name="Argument.value">${product.productLength}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productShipeable" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productShipeable</stringProp>
+ <stringProp name="Argument.value">${product.productShipeable}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productVirtual" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productVirtual</stringProp>
+ <stringProp name="Argument.value">${product.productVirtual}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWeight" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWeight</stringProp>
+ <stringProp name="Argument.value">${product.productWeight}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.productWidth" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.productWidth</stringProp>
+ <stringProp name="Argument.value">${product.productWidth}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sku" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sku</stringProp>
+ <stringProp name="Argument.value">${product.sku}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.sortOrder" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.sortOrder</stringProp>
+ <stringProp name="Argument.value">${product.sortOrder}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.taxClass.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.taxClass.id</stringProp>
+ <stringProp name="Argument.value">${product.taxClass.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="product.type.id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">product.type.id</stringProp>
+ <stringProp name="Argument.value">${product.type.id}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productImage.productImage" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productImage.productImage</stringProp>
+ <stringProp name="Argument.value">${productImage.productImage}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productPrice" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productPrice</stringProp>
+ <stringProp name="Argument.value">${productPrice}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/save.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="TestPlan.comments">random data is generated on server, these params are useless but required</stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((1000000 - 2000) + 1) + 2000;
+int da = rand.nextInt((28 - 1) + 1) + 1;
+int man = rand.nextInt((200 - 1) + 1) + 1;
+
+vars.put("_product.productShipeable","on");
+vars.put("product.id","");
+vars.put("_product.available","on");
+vars.put("availability.productQuantity",Integer.toString(da));
+vars.put("availability.productQuantityOrderMin","0");
+vars.put("availability.productQuantityOrderMax","0");
+vars.put("availability.region","*");
+vars.put("dateAvailable","2016-10-" + da);
+vars.put("product.productShipeable","true");
+vars.put("_product.productShipeable","on");
+vars.put("availability.id","");
+vars.put("price.id","");
+vars.put("product.productVirtual","false");
+vars.put("product.productWeight","");
+vars.put("product.productHeight","");
+vars.put("product.productWidth","");
+vars.put("product.productLength","");
+vars.put("product.sortOrder","0");
+vars.put("image","");
+vars.put("productImage.productImage","");
+vars.put("product.taxClass.id","1");
+vars.put("descriptions[0].description","<p>random" + id + "</p>");
+vars.put("descriptions[0].id","");
+vars.put("descriptions[0].language.code","en");
+vars.put("descriptions[0].language.id","1");
+vars.put("descriptions[0].metatagDescription","product" + id);
+vars.put("descriptions[0].metatagKeywords","");
+vars.put("descriptions[0].metatagTitle","product" + id);
+vars.put("descriptions[0].name","product" + id);
+vars.put("descriptions[0].productExternalDl","");
+vars.put("descriptions[0].productHighlight","product" + id);
+vars.put("descriptions[0].seUrl","product" + id);
+vars.put("product.available","true");
+vars.put("product.manufacturer.id","1");
+vars.put("product.sku","product" + id);
+vars.put("product.type.id","1");
+vars.put("productPrice","50.00");</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundaryhIJnvIaHZzAtMcMU</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/createProduct.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">298.0</stringProp>
+ <stringProp name="ConstantTimer.delay">596.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="/admin/edit" enabled="true"/>
+ <hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_check" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="j_password" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_password</stringProp>
+ <stringProp name="Argument.value">password</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="j_username" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">j_username</stringProp>
+ <stringProp name="Argument.value">admin</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_check</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">684.0</stringProp>
+ <stringProp name="ConstantTimer.delay">1368.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/home" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/home.html</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/logon.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">401.20000000000005</stringProp>
+ <stringProp name="ConstantTimer.delay">802.4000000000001</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="displayProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/displayProductToCategories.html?id=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
+ <boolProp name="resetInterpreter">false</boolProp>
+ <stringProp name="parameters"></stringProp>
+ <stringProp name="filename"></stringProp>
+ <stringProp name="script">import java.util.Random;
+
+Random rand = new Random();
+int id = rand.nextInt((2000) + 1);
+
+vars.put("PRODUCT_ID",Integer.toString(id));</stringProp>
+ </BeanShellPreProcessor>
+ <hashTree/>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/save.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">428.0</stringProp>
+ <stringProp name="ConstantTimer.delay">856.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="product-categories/paging" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="_componentId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_componentId</stringProp>
+ <stringProp name="Argument.value">entityList</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_dataSource" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_dataSource</stringProp>
+ <stringProp name="Argument.value">dataSource</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_endRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_endRow</stringProp>
+ <stringProp name="Argument.value">75</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_operationType" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_operationType</stringProp>
+ <stringProp name="Argument.value">fetch</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_startRow" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_startRow</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="_textMatchStyle" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">_textMatchStyle</stringProp>
+ <stringProp name="Argument.value">substring</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_dataFormat" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_dataFormat</stringProp>
+ <stringProp name="Argument.value">json</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="isc_metaDataPrefix" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">isc_metaDataPrefix</stringProp>
+ <stringProp name="Argument.value">_</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/product-categories/paging.html?productId=${PRODUCT_ID}</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">application/x-www-form-urlencoded;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">*/*</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">1634.4</stringProp>
+ <stringProp name="ConstantTimer.delay">3268.8</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="products/addProductToCategories" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="id" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">id</stringProp>
+ <stringProp name="Argument.value">4</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="productId" elementType="HTTPArgument">
+ <boolProp name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp name="Argument.name">productId</stringProp>
+ <stringProp name="Argument.value">${PRODUCT_ID}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/products/addProductToCategories.html</stringProp>
+ <stringProp name="HTTPSampler.method">POST</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="false">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Origin" elementType="Header">
+ <stringProp name="Header.name">Origin</stringProp>
+ <stringProp name="Header.value">http://localhost:8080</stringProp>
+ </elementProp>
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Content-Type" elementType="Header">
+ <stringProp name="Header.name">Content-Type</stringProp>
+ <stringProp name="Header.value">multipart/form-data;boundary=----WebKitFormBoundary1Vpb3naPvzIC1lA3</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/displayProductToCategories.html?id=2050</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">787.6</stringProp>
+ <stringProp name="ConstantTimer.delay">1575.2</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="admin/j_spring_security_logout" enabled="true">
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </elementProp>
+ <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+ <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path">${SHOWCASE_ADMIN}/j_spring_security_logout</stringProp>
+ <stringProp name="HTTPSampler.method">GET</stringProp>
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
+ <stringProp name="HTTPSampler.concurrentPool">2</stringProp>
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
+ </HTTPSamplerProxy>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header manager" enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Upgrade-Insecure-Requests" elementType="Header">
+ <stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
+ <stringProp name="Header.value">1</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent" elementType="Header">
+ <stringProp name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/52.0.2743.116Safari/537.36</stringProp>
+ </elementProp>
+ <elementProp name="Accept" elementType="Header">
+ <stringProp name="Header.name">Accept</stringProp>
+ <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</stringProp>
+ </elementProp>
+ <elementProp name="Referer" elementType="Header">
+ <stringProp name="Header.name">Referer</stringProp>
+ <stringProp name="Header.value">http://localhost:8080/sm-shop/admin/products/addProductToCategories.html</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Encoding" elementType="Header">
+ <stringProp name="Header.name">Accept-Encoding</stringProp>
+ <stringProp name="Header.value">gzip,deflate,sdch</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language" elementType="Header">
+ <stringProp name="Header.name">Accept-Language</stringProp>
+ <stringProp name="Header.value">en-US,en;q=0.8</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
+ <stringProp name="RandomTimer.range">806.4000000000001</stringProp>
+ <stringProp name="ConstantTimer.delay">1612.8000000000002</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ </hashTree>
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ </ConstantTimer>
+ <hashTree/>
+ </hashTree>
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="false">
+ <boolProp name="clearEachIteration">false</boolProp>
+ <boolProp name="useExpires">false</boolProp>
+ <boolProp name="CacheManager.controlledByThread">false</boolProp>
+ </CacheManager>
+ <hashTree/>
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Thinking Gaussian Random Timer" enabled="false">
+ <stringProp name="ConstantTimer.delay">7000</stringProp>
+ <stringProp name="RandomTimer.range">7000</stringProp>
+ </GaussianRandomTimer>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>true</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <url>true</url>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.SynthesisReportGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Synthesis Report (filtered)" enabled="true">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels">Debug Sampler</stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Active Threads Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">500</longProp>
+ <boolProp name="graph_aggregated">false</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Response Times Over Time" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>false</latency>
+ <timestamp>true</timestamp>
+ <success>false</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>false</threadName>
+ <dataType>false</dataType>
+ <encoding>false</encoding>
+ <assertions>false</assertions>
+ <subresults>false</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <threadCounts>true</threadCounts>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.TransactionsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="jp@gc - Transactions per Second" enabled="false">
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>false</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <threadCounts>true</threadCounts>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <longProp name="interval_grouping">1000</longProp>
+ <boolProp name="graph_aggregated">true</boolProp>
+ <stringProp name="include_sample_labels"></stringProp>
+ <stringProp name="exclude_sample_labels"></stringProp>
+ <stringProp name="start_offset"></stringProp>
+ <stringProp name="end_offset"></stringProp>
+ <boolProp name="include_checkbox_state">false</boolProp>
+ <boolProp name="exclude_checkbox_state">false</boolProp>
+ </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
+ <hashTree/>
+ <kg.apc.jmeter.reporters.FlexibleFileWriter guiclass="kg.apc.jmeter.reporters.FlexibleFileWriterGui" testclass="kg.apc.jmeter.reporters.FlexibleFileWriter" testname="jp@gc - Flexible File Writer" enabled="false">
+ <stringProp name="filename">testResults.txt</stringProp>
+ <stringProp name="columns">endTimeMillis|\t|responseTime|\t|latency|\t|sentBytes|\t|receivedBytes|\t|isSuccessful|\t|responseCode|\r\n</stringProp>
+ <boolProp name="overwrite">false</boolProp>
+ <stringProp name="header">endTimeMillis responseTime latency sentBytes receivedBytes isSuccessful responseCode
+</stringProp>
+ <stringProp name="footer"></stringProp>
+ </kg.apc.jmeter.reporters.FlexibleFileWriter>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ </hashTree>
+</jmeterTestPlan>
evaluation/workloads/adaptive/workload.txt 20(+20 -0)
diff --git a/evaluation/workloads/adaptive/workload.txt b/evaluation/workloads/adaptive/workload.txt
new file mode 100644
index 0000000..8cfabd5
--- /dev/null
+++ b/evaluation/workloads/adaptive/workload.txt
@@ -0,0 +1,20 @@
+[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
+[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
+[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
+[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+[0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 3, 0, 2, 2, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 0, 1, 1, 0, 0, 2, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 1, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 1, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 1, 1, 0, 2, 0, 0, 3, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 0, 0, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, 3, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 0, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 3, 3, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 2, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
+[0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 0, 3, 3, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 0, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 3, 3, 3, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 3, 0, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 3, 3, 3, 0, 1, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 3, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 2, 0, 0, 1, 0, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 0, 3, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 3, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 3, 0, 3, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 3, 3, 0, 2, 2, 0, 0, 1, 0, 3, 3, 3, 3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 3, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
+[0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 2, 2, 0, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 3, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 1, 1, 1, 0, 2, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 3, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 0, 2, 0, 0, 3, 0, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 1, 1, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2, 0, 1, 1, 1, 0, 2, 2, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 3, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 3, 0, 2, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 3, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 3, 3, 0, 0, 0, 0, 1, 1, 0, 3, 0, 2, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 2, 2, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+[0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 2, 2, 2, 2, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 3, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 2, 2, 0, 3, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 3, 3, 3, 0, 2, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 2, 2, 0, 3, 3, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 2, 2, 0, 2, 0, 0, 3, 3, 3, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 0, 1, 0, 0, 1, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 1, 1, 1, 0, 0, 2, 0, 3, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 1, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+[0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 3, 3, 3, 3, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 2, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 0, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 1, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 1, 0, 0, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 2, 2, 2, 2, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 1, 0, 3, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 3, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 0, 0, 3, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 3, 3, 3, 0, 0, 2, 0, 2, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 0, 3, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 0, 3, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
+[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 3, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 3, 3, 3, 3, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 3, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 2, 2, 0, 1, 0, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 1, 1, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 1, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 3, 3, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 0, 0, 2, 0, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 3, 0, 3, 0, 0, 0, 2, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 0, 3, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 0, 2, 2, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 1, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 3, 3, 3, 3, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 0, 2, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
+[0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 2, 0, 1, 1, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 0, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 3, 3, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 3, 3, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 2, 0, 0, 0, 3, 3, 0, 3, 0, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 3, 3, 3, 0, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 3, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 0, 3, 3, 0, 2, 0, 3, 3, 3, 0, 3, 3, 3, 0, 3, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 1, 1, 0, 2, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 2, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 3, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 1, 0, 3, 3, 0, 3, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
+[0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 3, 3, 3, 3, 3, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 3, 3, 3, 3, 0, 2, 0, 3, 0, 0, 2, 2, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 0, 2, 2, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 0, 3, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 0, 1, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 0, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 3, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 1, 0, 0, 2, 2, 0, 1, 0, 1, 1, 1, 0, 2, 2, 2, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 3, 3, 0, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 3, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 3, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 0, 2, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 3, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 2, 2, 0, 3, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 2, 0, 1, 0, 1, 1, 0, 0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 0, 1, 1, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2]
+[0, 0, 0, 0, 2, 0, 2, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 0, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 3, 0, 0, 1, 1, 1, 1, 1, 0, 3, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 0, 0, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 1, 0, 2, 0, 2, 2, 2, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 3, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 2, 2, 0, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 2, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 3, 0, 0, 3, 3, 0, 1, 0, 0, 1, 1, 0, 3, 3, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 3, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 0, 1, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 3, 3, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 0, 0, 0, 2, 2, 0, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 3, 0, 1, 1, 0, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 2, 0, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1]
+[0, 0, 0, 0, 1, 0, 3, 3, 0, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 0, 1, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 3, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 0, 0, 1, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 2, 2, 0, 2, 2, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 3, 0, 0, 0, 2, 0, 1, 0, 0, 3, 0, 0, 1, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 1, 1, 0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 3, 0, 0, 1, 0, 3, 3, 3, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 3, 3, 0, 3, 0, 2, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 3, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 2, 0, 3, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2]
+[0, 0, 0, 0, 2, 0, 0, 2, 0, 2, 0, 0, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 0, 0, 2, 2, 2, 0, 3, 3, 3, 0, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 1, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 0, 3, 3, 0, 2, 0, 0, 1, 1, 0, 2, 2, 0, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 3, 0, 2, 0, 2, 2, 2, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 2, 0, 1, 1, 1, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 1, 0, 3, 0, 0, 0, 3, 0, 3, 0, 0, 2, 0, 0, 2, 2, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 1, 1, 0, 3, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 0, 1, 1, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 2, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 2, 0, 0, 0, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 1, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 3, 3, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2]
+[0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 0, 0, 1, 1, 0, 0, 2, 2, 2, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 1, 0, 3, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 0, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 0, 0, 0, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 2, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 2, 2, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 1, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 3, 3, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 3, 0, 1, 0, 0, 0, 3, 0, 3, 0, 0, 1, 0, 0, 3, 3, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 3, 0, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 1, 1, 1, 1, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 3, 0, 2, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 3, 3, 0, 3, 3, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 0, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 1, 1, 1, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 0]
+[0, 0, 0, 0, 3, 0, 0, 2, 0, 1, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 0, 0, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 3, 0, 3, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 3, 3, 3, 0, 1, 0, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 0, 1, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 2, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 3, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 0, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 2, 2, 0, 1, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 0, 0, 3, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 2, 0, 0, 2, 2, 2, 2, 0, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 1, 1, 0, 0, 3, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 3, 3, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 1, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 3, 0, 3, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 0, 0, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 0, 1, 0]
+[0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 0, 0, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 2, 2, 2, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 3, 0, 1, 0, 1, 0, 2, 0, 0, 1, 1, 0, 3, 0, 2, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, 2, 2, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 1, 1, 0, 3, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 3, 3, 3, 0, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 2, 2, 0, 3, 3, 3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 0, 0, 2, 2, 0, 3, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 3, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 0, 0, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 0, 3, 3, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 2, 2, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3, 0, 0, 3, 0, 2, 0, 0, 0, 0, 2, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 3, 3, 3, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 3, 3, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 3, 0]
+[0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 3, 3, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 3, 3, 3, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 2, 0, 2, 0, 3, 0, 2, 0, 0, 2, 2, 0, 1, 0, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 1, 1, 0, 1, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 1, 0, 3, 3, 0, 0, 0, 3, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 2, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 3, 3, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 0, 1, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 3, 3, 0, 2, 2, 2, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 0, 0, 3, 3, 0, 2, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 0, 3, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 3, 0, 0, 0, 1, 0, 3, 3, 0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 2, 0, 3, 3, 3, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 1, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 0, 3, 3, 0, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 1, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 1, 0]
\ No newline at end of file
diff --git a/evaluation/workloads/adaptive/WorkloadGenerator.java b/evaluation/workloads/adaptive/WorkloadGenerator.java
new file mode 100644
index 0000000..950103a
--- /dev/null
+++ b/evaluation/workloads/adaptive/WorkloadGenerator.java
@@ -0,0 +1,69 @@
+package br.ufrgs.inf.prosoft.tigris;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class WorkloadGenerator {
+
+ /**
+ * Generates the workload for 20 users
+ *
+ * The simulation starts with five simultaneous users constantly navigating through the application based on a navigation pattern that falls into a specific distribution (transition table). To stimulate changes in the workload, we created three variations of navigation pattern for each application, and whenever a user is added to the simulation, we randomly decide which of the three workload variations the new user should follow.
+ * Then, every second we randomly add or remove a number of users (from 1 to 10) to the simulation until all the users perform the total of 60k requests to the application.
+ * Note: We adopted a minimum number of 5 simultaneous users to keep a minimum of concurrency in the workload, and a maximum of 20 to avoid disruptions in the response times due to struggles from the web server.
+ *
+ * The output of this code is something like:
+ *
+ * {user1=[3, 3, 3, 3], user11=[0, 2, 2, 0], user2=[3, 3, 3, 3], user10=[0, 1, 1, 0], user20=[0, 0, 0, 0], user15=[0, 0, 0, 0], user14=[0, 0, 0, 0], user13=[0, 0, 2, 0], user12=[0, 1, 1, 0], user9=[0, 3, 3, 3], user7=[0, 2, 2, 2], user8=[0, 3, 3, 3], user5=[1, 1, 1, 1], user6=[0, 2, 2, 2], user3=[2, 2, 2, 2], user4=[2, 2, 2, 2], user19=[0, 0, 0, 0], user18=[0, 0, 0, 0], user17=[0, 0, 0, 0], user16=[0, 0, 0, 0]}
+ * where 1,2 and 3 are the ID of the existing workload mixtures
+ * 0 means that the user is turned down
+ * It can change the workload mixtures when turning up again
+ *
+ * @param args none of them are used
+ */
+ public static void main(String[] args){
+ Map<String, List<Integer>> users = new HashMap<>();
+ for (int i = 1; i <= 20; i++) {
+ List<Integer> userNavigation = new ArrayList<>();
+ if (i <= 5) {
+ userNavigation.add(new Random().nextInt(3) + 1);
+ users.put("user" + i, userNavigation);
+ } else {
+ userNavigation.add(0);
+ users.put("user" + i, userNavigation);
+ }
+ }
+
+ int currentUsers = 5;
+ int iterations = 3600;
+ for (int i = 0; i < iterations; i++) {
+ int factor = (new Random().nextInt(10) + 1) * (new Random().nextInt(2) == 1 ? 1 : -1);
+ currentUsers += factor;
+ if (currentUsers < 5)
+ currentUsers = 5;
+ if (currentUsers > 20)
+ currentUsers = 20;
+
+ for (int j = 1; j <= 20; j++) {
+ List<Integer> userNavigation = users.get("user" + j);
+ if (j > currentUsers) { //inactive users
+ userNavigation.add(0);
+ } else { //active users
+ if (userNavigation.get(userNavigation.size() - 1) == 0)
+ userNavigation.add(new Random().nextInt(3) + 1);
+ else {
+ userNavigation.add(userNavigation.get(userNavigation.size() - 1));
+ }
+ }
+ }
+ }
+
+ for (int j = 1; j <= 20; j++) {
+ System.out.println(users.get("user" + j));
+ }
+ }
+
+}
\ No newline at end of file