<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<jmeterTestPlan version="1.2" properties="2.8" jmeter="2.13 r1665067">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Performance Toolkit" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="request_protocol" elementType="Argument">
            <stringProp name="Argument.name">request_protocol</stringProp>
            <stringProp name="Argument.value">${__P(request_protocol,http)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="abandonedCartByGuest" elementType="Argument">
            <stringProp name="Argument.name">abandonedCartByGuest</stringProp>
            <stringProp name="Argument.value">${__P(abandonedCartByGuest,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="abandonedCartByGuestPercent" elementType="Argument">
            <stringProp name="Argument.name">abandonedCartByGuestPercent</stringProp>
            <stringProp name="Argument.value">${__P(abandonedCartByGuestPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="abandonedCartByCustomer" elementType="Argument">
            <stringProp name="Argument.name">abandonedCartByCustomer</stringProp>
            <stringProp name="Argument.value">${__P(abandonedCartByCustomer,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="abandonedCartByCustomerPercent" elementType="Argument">
            <stringProp name="Argument.name">abandonedCartByCustomerPercent</stringProp>
            <stringProp name="Argument.value">${__P(abandonedCartByCustomerPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="accountManagement" elementType="Argument">
            <stringProp name="Argument.name">accountManagement</stringProp>
            <stringProp name="Argument.value">${__P(accountManagement,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="accountManagementPercent" elementType="Argument">
            <stringProp name="Argument.name">accountManagementPercent</stringProp>
            <stringProp name="Argument.value">${__P(accountManagementPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="admin_password" elementType="Argument">
            <stringProp name="Argument.name">admin_password</stringProp>
            <stringProp name="Argument.value">${__P(admin_password,123123q)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="admin_path" elementType="Argument">
            <stringProp name="Argument.name">admin_path</stringProp>
            <stringProp name="Argument.value">${__P(admin_path,admin)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="admin_user" elementType="Argument">
            <stringProp name="Argument.name">admin_user</stringProp>
            <stringProp name="Argument.value">${__P(admin_user,admin)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridPercent" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridScenario1_ViewOddGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridScenario1_ViewOddGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridScenario1_ViewOddGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridScenario2_ViewEvenGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridScenario2_ViewEvenGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridScenario2_ViewEvenGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridScenario3_Filtering" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridScenario3_Filtering</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridScenario3_Filtering,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridScenario4_Sorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridScenario4_Sorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridScenario4_Sorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseCustomersGridScenario5_FilteringAndSorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseCustomersGridScenario5_FilteringAndSorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseCustomersGridScenario5_FilteringAndSorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridPercent" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridScenario1_ViewOddGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridScenario1_ViewOddGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridScenario1_ViewOddGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridScenario2_ViewEvenGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridScenario2_ViewEvenGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridScenario2_ViewEvenGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridScenario3_Filtering" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridScenario3_Filtering</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridScenario3_Filtering,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridScenario4_Sorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridScenario4_Sorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridScenario4_Sorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseOrdersGridScenario5_FilteringAndSorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseOrdersGridScenario5_FilteringAndSorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseOrdersGridScenario5_FilteringAndSorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridPercent" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridScenario1_ViewOddGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridScenario1_ViewOddGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridScenario1_ViewOddGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridScenario2_ViewEvenGridPages" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridScenario2_ViewEvenGridPages</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridScenario2_ViewEvenGridPages,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridScenario3_Filtering" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridScenario3_Filtering</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridScenario3_Filtering,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridScenario4_Sorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridScenario4_Sorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridScenario4_Sorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminBrowseProductsGridScenario5_FilteringAndSorting" elementType="Argument">
            <stringProp name="Argument.name">adminBrowseProductsGridScenario5_FilteringAndSorting</stringProp>
            <stringProp name="Argument.value">${__P(adminBrowseProductsGridScenario5_FilteringAndSorting,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCategoryCount" elementType="Argument">
            <stringProp name="Argument.name">adminCategoryCount</stringProp>
            <stringProp name="Argument.value">${__P(adminCategoryCount,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCategoryManagement" elementType="Argument">
            <stringProp name="Argument.name">adminCategoryManagement</stringProp>
            <stringProp name="Argument.value">${__P(adminCategoryManagement,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCategoryManagementDelay" elementType="Argument">
            <stringProp name="Argument.name">adminCategoryManagementDelay</stringProp>
            <stringProp name="Argument.value">${__P(adminCategoryManagementDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCategoryManagementPercent" elementType="Argument">
            <stringProp name="Argument.name">adminCategoryManagementPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminCategoryManagementPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCMSManagement" elementType="Argument">
            <stringProp name="Argument.name">adminCMSManagement</stringProp>
            <stringProp name="Argument.value">${__P(adminCMSManagement,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCMSManagementDelay" elementType="Argument">
            <stringProp name="Argument.name">adminCMSManagementDelay</stringProp>
            <stringProp name="Argument.value">${__P(adminCMSManagementDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCMSManagementPercent" elementType="Argument">
            <stringProp name="Argument.name">adminCMSManagementPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminCMSManagementPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCreateOrder" elementType="Argument">
            <stringProp name="Argument.name">adminCreateOrder</stringProp>
            <stringProp name="Argument.value">${__P(adminCreateOrder,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCreateOrderPercent" elementType="Argument">
            <stringProp name="Argument.name">adminCreateOrderPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminCreateOrderPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCreateProduct" elementType="Argument">
            <stringProp name="Argument.name">adminCreateProduct</stringProp>
            <stringProp name="Argument.value">${__P(adminCreateProduct,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCreateProductPercent" elementType="Argument">
            <stringProp name="Argument.name">adminCreateProductPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminCreateProductPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCustomerManagement" elementType="Argument">
            <stringProp name="Argument.name">adminCustomerManagement</stringProp>
            <stringProp name="Argument.value">${__P(adminCustomerManagement,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCustomerManagementDelay" elementType="Argument">
            <stringProp name="Argument.name">adminCustomerManagementDelay</stringProp>
            <stringProp name="Argument.value">${__P(adminCustomerManagementDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminCustomerManagementPercent" elementType="Argument">
            <stringProp name="Argument.name">adminCustomerManagementPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminCustomerManagementPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminEditOrder" elementType="Argument">
            <stringProp name="Argument.name">adminEditOrder</stringProp>
            <stringProp name="Argument.value">${__P(adminEditOrder,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminEditOrderPercent" elementType="Argument">
            <stringProp name="Argument.name">adminEditOrderPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminEditOrderPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminEditProduct" elementType="Argument">
            <stringProp name="Argument.name">adminEditProduct</stringProp>
            <stringProp name="Argument.value">${__P(adminEditProduct,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminEditProductPercent" elementType="Argument">
            <stringProp name="Argument.name">adminEditProductPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminEditProductPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminExportCustomers" elementType="Argument">
            <stringProp name="Argument.name">adminExportCustomers</stringProp>
            <stringProp name="Argument.value">${__P(adminExportCustomers,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminExportProducts" elementType="Argument">
            <stringProp name="Argument.name">adminExportProducts</stringProp>
            <stringProp name="Argument.value">${__P(adminExportProducts,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportCustomerBehavior" elementType="Argument">
            <stringProp name="Argument.name">adminImportCustomerBehavior</stringProp>
            <stringProp name="Argument.value">${__P(adminImportCustomerBehavior,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportCustomerFilePath" elementType="Argument">
            <stringProp name="Argument.name">adminImportCustomerFilePath</stringProp>
            <stringProp name="Argument.value">${__P(adminImportCustomerFilePath,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportCustomers" elementType="Argument">
            <stringProp name="Argument.name">adminImportCustomers</stringProp>
            <stringProp name="Argument.value">${__P(adminImportCustomers,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportProductBehavior" elementType="Argument">
            <stringProp name="Argument.name">adminImportProductBehavior</stringProp>
            <stringProp name="Argument.value">${__P(adminImportProductBehavior,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportProductFilePath" elementType="Argument">
            <stringProp name="Argument.name">adminImportProductFilePath</stringProp>
            <stringProp name="Argument.value">${__P(adminImportProductFilePath,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportProductFilePath-2" elementType="Argument">
            <stringProp name="Argument.name">adminImportProductFilePath-2</stringProp>
            <stringProp name="Argument.value">${__P(adminImportProductFilePath-2,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminImportProducts" elementType="Argument">
            <stringProp name="Argument.name">adminImportProducts</stringProp>
            <stringProp name="Argument.value">${__P(adminImportProducts,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminPromotionsManagement" elementType="Argument">
            <stringProp name="Argument.name">adminPromotionsManagement</stringProp>
            <stringProp name="Argument.value">${__P(adminPromotionsManagement,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminPromotionsManagementDelay" elementType="Argument">
            <stringProp name="Argument.name">adminPromotionsManagementDelay</stringProp>
            <stringProp name="Argument.value">${__P(adminPromotionsManagementDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="adminPromotionsManagementPercent" elementType="Argument">
            <stringProp name="Argument.name">adminPromotionsManagementPercent</stringProp>
            <stringProp name="Argument.value">${__P(adminPromotionsManagementPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiBrowseAndBuyFlow" elementType="Argument">
            <stringProp name="Argument.name">apiBrowseAndBuyFlow</stringProp>
            <stringProp name="Argument.value">${__P(apiBrowseAndBuyFlow,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiBrowseAndBuyFlowPercent" elementType="Argument">
            <stringProp name="Argument.name">apiBrowseAndBuyFlowPercent</stringProp>
            <stringProp name="Argument.value">${__P(apiBrowseAndBuyFlowPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiCustomerSync" elementType="Argument">
            <stringProp name="Argument.name">apiCustomerSync</stringProp>
            <stringProp name="Argument.value">${__P(apiCustomerSync,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiCustomerSyncPercent" elementType="Argument">
            <stringProp name="Argument.name">apiCustomerSyncPercent</stringProp>
            <stringProp name="Argument.value">${__P(apiCustomerSyncPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiOrderInvoiceShipmentSync" elementType="Argument">
            <stringProp name="Argument.name">apiOrderInvoiceShipmentSync</stringProp>
            <stringProp name="Argument.value">${__P(apiOrderInvoiceShipmentSync,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiOrderInvoiceShipmentSyncPercent" elementType="Argument">
            <stringProp name="Argument.name">apiOrderInvoiceShipmentSyncPercent</stringProp>
            <stringProp name="Argument.value">${__P(apiOrderInvoiceShipmentSyncPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiProcessOrders" elementType="Argument">
            <stringProp name="Argument.name">apiProcessOrders</stringProp>
            <stringProp name="Argument.value">${__P(apiProcessOrders,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiProcessOrdersPercent" elementType="Argument">
            <stringProp name="Argument.name">apiProcessOrdersPercent</stringProp>
            <stringProp name="Argument.value">${__P(apiProcessOrdersPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiProductSync" elementType="Argument">
            <stringProp name="Argument.name">apiProductSync</stringProp>
            <stringProp name="Argument.value">${__P(apiProductSync,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiProductSyncPercent" elementType="Argument">
            <stringProp name="Argument.name">apiProductSyncPercent</stringProp>
            <stringProp name="Argument.value">${__P(apiProductSyncPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="apiSnapshot" elementType="Argument">
            <stringProp name="Argument.name">apiSnapshot</stringProp>
            <stringProp name="Argument.value">${__P(apiSnapshot,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="bamboo_build_number" elementType="Argument">
            <stringProp name="Argument.name">bamboo_build_number</stringProp>
            <stringProp name="Argument.value">${__P(bamboo_build_number,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="base_path" elementType="Argument">
            <stringProp name="Argument.name">base_path</stringProp>
            <stringProp name="Argument.value">${__P(base_path,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="cache_indicator" elementType="Argument">
            <stringProp name="Argument.name">cache_indicator</stringProp>
            <stringProp name="Argument.value">${__P(cache_indicator,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="catalogBrowsingByGuest" elementType="Argument">
            <stringProp name="Argument.name">catalogBrowsingByGuest</stringProp>
            <stringProp name="Argument.value">${__P(catalogBrowsingByGuest,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="catalogBrowsingByGuestPercent" elementType="Argument">
            <stringProp name="Argument.name">catalogBrowsingByGuestPercent</stringProp>
            <stringProp name="Argument.value">${__P(catalogBrowsingByGuestPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="catalogBrowsingByCustomer" elementType="Argument">
            <stringProp name="Argument.name">catalogBrowsingByCustomer</stringProp>
            <stringProp name="Argument.value">${__P(catalogBrowsingByCustomer,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="catalogBrowsingByCustomerPercent" elementType="Argument">
            <stringProp name="Argument.name">catalogBrowsingByCustomerPercent</stringProp>
            <stringProp name="Argument.value">${__P(catalogBrowsingByCustomerPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="categories_count" elementType="Argument">
            <stringProp name="Argument.name">categories_count</stringProp>
            <stringProp name="Argument.value">${__P(categories_count,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutByGuest" elementType="Argument">
            <stringProp name="Argument.name">checkoutByGuest</stringProp>
            <stringProp name="Argument.value">${__P(checkoutByGuest,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutByGuestPercent" elementType="Argument">
            <stringProp name="Argument.name">checkoutByGuestPercent</stringProp>
            <stringProp name="Argument.value">${__P(checkoutByGuestPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutByCustomer" elementType="Argument">
            <stringProp name="Argument.name">checkoutByCustomer</stringProp>
            <stringProp name="Argument.value">${__P(checkoutByCustomer,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="checkoutByCustomerPercent" elementType="Argument">
            <stringProp name="Argument.name">checkoutByCustomerPercent</stringProp>
            <stringProp name="Argument.value">${__P(checkoutByCustomerPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="configurable_products_count" elementType="Argument">
            <stringProp name="Argument.name">configurable_products_count</stringProp>
            <stringProp name="Argument.value">${__P(configurable_products_count,30)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="customer_checkout_percent" elementType="Argument">
            <stringProp name="Argument.name">customer_checkout_percent</stringProp>
            <stringProp name="Argument.value">${__P(customer_checkout_percent,4)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="customer_limit" elementType="Argument">
            <stringProp name="Argument.name">customer_limit</stringProp>
            <stringProp name="Argument.value">${__P(customer_limit,20)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="customer_password" elementType="Argument">
            <stringProp name="Argument.name">customer_password</stringProp>
            <stringProp name="Argument.value">123123q</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="customers_page_size" elementType="Argument">
            <stringProp name="Argument.name">customers_page_size</stringProp>
            <stringProp name="Argument.value">${__P(customers_page_size,20)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="dashboard_enabled" elementType="Argument">
            <stringProp name="Argument.name">dashboard_enabled</stringProp>
            <stringProp name="Argument.value">${__P(dashboard_enabled,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="files_folder" elementType="Argument">
            <stringProp name="Argument.name">files_folder</stringProp>
            <stringProp name="Argument.value">${__P(files_folder,/opt/mpaf/tool/fragments/files/)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="guest_checkout_percent" elementType="Argument">
            <stringProp name="Argument.name">guest_checkout_percent</stringProp>
            <stringProp name="Argument.value">${__P(guest_checkout_percent,4)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="host" elementType="Argument">
            <stringProp name="Argument.name">host</stringProp>
            <stringProp name="Argument.value">${__P(host,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="loops" elementType="Argument">
            <stringProp name="Argument.name">loops</stringProp>
            <stringProp name="Argument.value">${__P(loops,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="lineItemsAmount" elementType="Argument">
            <stringProp name="Argument.name">lineItemsAmount</stringProp>
            <stringProp name="Argument.value">${__P(lineItemsAmount,10)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="orders" elementType="Argument">
            <stringProp name="Argument.name">orders</stringProp>
            <stringProp name="Argument.value">${__P(orders,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="orders_page_size" elementType="Argument">
            <stringProp name="Argument.name">orders_page_size</stringProp>
            <stringProp name="Argument.value">${__P(orders_page_size,20)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="products_page_size" elementType="Argument">
            <stringProp name="Argument.name">products_page_size</stringProp>
            <stringProp name="Argument.value">${__P(products_page_size,20)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productCompareByGuest" elementType="Argument">
            <stringProp name="Argument.name">productCompareByGuest</stringProp>
            <stringProp name="Argument.value">${__P(productCompareByGuest,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productCompareByGuestPercent" elementType="Argument">
            <stringProp name="Argument.name">productCompareByGuestPercent</stringProp>
            <stringProp name="Argument.value">${__P(productCompareByGuestPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productCompareDelay" elementType="Argument">
            <stringProp name="Argument.name">productCompareDelay</stringProp>
            <stringProp name="Argument.value">${__P(productCompareDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productsGridMassActions" elementType="Argument">
            <stringProp name="Argument.name">productsGridMassActions</stringProp>
            <stringProp name="Argument.value">${__P(productsGridMassActions,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="productsGridMassActionsPercent" elementType="Argument">
            <stringProp name="Argument.name">productsGridMassActionsPercent</stringProp>
            <stringProp name="Argument.value">${__P(productsGridMassActionsPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="ramp_period" elementType="Argument">
            <stringProp name="Argument.name">ramp_period</stringProp>
            <stringProp name="Argument.value">${__P(ramp_period,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="redis_host" elementType="Argument">
            <stringProp name="Argument.name">redis_host</stringProp>
            <stringProp name="Argument.value">${__P(redis_host,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="report_save_path" elementType="Argument">
            <stringProp name="Argument.name">report_save_path</stringProp>
            <stringProp name="Argument.value">${__P(report_save_path,./)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="response_time_file_name" elementType="Argument">
            <stringProp name="Argument.name">response_time_file_name</stringProp>
            <stringProp name="Argument.value">${__P(response_time_file_name,production.csv)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="reviewByCustomer" elementType="Argument">
            <stringProp name="Argument.name">reviewByCustomer</stringProp>
            <stringProp name="Argument.value">${__P(reviewByCustomer,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="reviewByCustomerPercent" elementType="Argument">
            <stringProp name="Argument.name">reviewByCustomerPercent</stringProp>
            <stringProp name="Argument.value">${__P(reviewByCustomerPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="reviewDelay" elementType="Argument">
            <stringProp name="Argument.name">reviewDelay</stringProp>
            <stringProp name="Argument.value">${__P(reviewDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="scenario" elementType="Argument">
            <stringProp name="Argument.name">scenario</stringProp>
            <stringProp name="Argument.value">${__P(scenario,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="seedForRandom" elementType="Argument">
            <stringProp name="Argument.name">seedForRandom</stringProp>
            <stringProp name="Argument.value">${__P(seedForRandom,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchQuick" elementType="Argument">
            <stringProp name="Argument.name">searchQuick</stringProp>
            <stringProp name="Argument.value">${__P(searchQuick,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchQuick_percent" elementType="Argument">
            <stringProp name="Argument.name">searchQuick_percent</stringProp>
            <stringProp name="Argument.value">${__P(searchQuick_percent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchQuickFilter" elementType="Argument">
            <stringProp name="Argument.name">searchQuickFilter</stringProp>
            <stringProp name="Argument.value">${__P(searchQuickFilter,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchQuickFilter_percent" elementType="Argument">
            <stringProp name="Argument.name">searchQuickFilter_percent</stringProp>
            <stringProp name="Argument.value">${__P(searchQuickFilter_percent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchAdvanced" elementType="Argument">
            <stringProp name="Argument.name">searchAdvanced</stringProp>
            <stringProp name="Argument.value">${__P(searchAdvanced,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="searchAdvanced_percent" elementType="Argument">
            <stringProp name="Argument.name">searchAdvanced_percent</stringProp>
            <stringProp name="Argument.value">${__P(searchAdvanced_percent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="setupAndTearDownThread" elementType="Argument">
            <stringProp name="Argument.name">setupAndTearDownThread</stringProp>
            <stringProp name="Argument.value">${__P(setupAndTearDownThread,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="simple_products_count" elementType="Argument">
            <stringProp name="Argument.name">simple_products_count</stringProp>
            <stringProp name="Argument.value">${__P(simple_products_count,30)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="sprint_identifier" elementType="Argument">
            <stringProp name="Argument.name">sprint_identifier</stringProp>
            <stringProp name="Argument.value">${__P(sprint_identifier,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="start_time" elementType="Argument">
            <stringProp name="Argument.name">start_time</stringProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="starting_index" elementType="Argument">
            <stringProp name="Argument.name">starting_index</stringProp>
            <stringProp name="Argument.value">${__P(starting_index,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="test_duration" elementType="Argument">
            <stringProp name="Argument.name">test_duration</stringProp>
            <stringProp name="Argument.value">${__P(test_duration,900)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="think_time_deviation" elementType="Argument">
            <stringProp name="Argument.name">think_time_deviation</stringProp>
            <stringProp name="Argument.value">${__P(think_time_deviation,1000)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="think_time_delay_offset" elementType="Argument">
            <stringProp name="Argument.name">think_time_delay_offset</stringProp>
            <stringProp name="Argument.value">${__P(think_time_delay_offset,2000)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="url_suffix" elementType="Argument">
            <stringProp name="Argument.name">url_suffix</stringProp>
            <stringProp name="Argument.value">.html</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="users" elementType="Argument">
            <stringProp name="Argument.name">users</stringProp>
            <stringProp name="Argument.value">${__P(users,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="view_catalog_percent" elementType="Argument">
            <stringProp name="Argument.name">view_catalog_percent</stringProp>
            <stringProp name="Argument.value">${__P(view_catalog_percent,62)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="view_product_add_to_cart_percent" elementType="Argument">
            <stringProp name="Argument.name">view_product_add_to_cart_percent</stringProp>
            <stringProp name="Argument.value">${__P(view_product_add_to_cart_percent,30)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="website_id" elementType="Argument">
            <stringProp name="Argument.name">website_id</stringProp>
            <stringProp name="Argument.value">1</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="wishlistByCustomer" elementType="Argument">
            <stringProp name="Argument.name">wishlistByCustomer</stringProp>
            <stringProp name="Argument.value">${__P(wishlistByCustomer,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="wishlistByCustomerPercent" elementType="Argument">
            <stringProp name="Argument.name">wishlistByCustomerPercent</stringProp>
            <stringProp name="Argument.value">${__P(wishlistByCustomerPercent,100)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="wishlistDelay" elementType="Argument">
            <stringProp name="Argument.name">wishlistDelay</stringProp>
            <stringProp name="Argument.value">${__P(wishlistDelay,0)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
    </TestPlan>
    <hashTree>
    <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" 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"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
      <stringProp name="HTTPSampler.path"/>
      <stringProp name="HTTPSampler.implementation">Java</stringProp>
      <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
    </ConfigTestElement>
    <hashTree/>
  
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="Accept-Language" elementType="Header">
          <stringProp name="Header.name">Accept-Language</stringProp>
          <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
        </elementProp>
        <elementProp name="Accept" elementType="Header">
          <stringProp name="Header.name">Accept</stringProp>
          <stringProp name="Header.value">application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
        </elementProp>
        <elementProp name="User-Agent" elementType="Header">
          <stringProp name="Header.name">User-Agent</stringProp>
          <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
        </elementProp>
        <elementProp name="Accept-Encoding" elementType="Header">
          <stringProp name="Header.name">Accept-Encoding</stringProp>
          <stringProp name="Header.value">gzip, deflate</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
    <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
      <collectionProp name="CookieManager.cookies">
        <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
          <stringProp name="Cookie.value">30</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>
    </CookieManager>
    <hashTree/>
  
    <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
      <stringProp name="ThreadGroup.on_sample_error">stoptest</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">${setupAndTearDownThread}</stringProp>
      <stringProp name="ThreadGroup.ramp_time">1</stringProp>
      <longProp name="ThreadGroup.start_time">1384333221000</longProp>
      <longProp name="ThreadGroup.end_time">1384333221000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </SetupThreadGroup>
    <hashTree>
      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Initialize" enabled="true">
        <stringProp name="BeanShellSampler.query">
props.remove("category_url_key");
props.remove("category_url_keys_list");
props.remove("category_name");
props.remove("category_names_list");
props.remove("simple_products_list");
props.remove("configurable_products_list");
props.remove("users");
props.remove("customer_emails_list");

/* This is only used when admin is enabled. */
props.put("activeAdminThread", "");

/* Set the environment - at this time '01' or '02' */
String path = "${host}";
String environment = path.substring(4, 6);
props.put("environment", environment);</stringProp>
        <stringProp name="BeanShellSampler.filename"/>
        <stringProp name="BeanShellSampler.parameters"/>
        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
      </BeanShellSampler>
      <hashTree/>
      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: validate user defined variables" enabled="true">
        <stringProp name="BeanShellSampler.query">Boolean stopTestOnError (String error) {
    log.error(error);
    System.out.println(error);
    SampleResult.setStopTest(true);
    return false;
}

if ("${host}" == "1") {
    return stopTestOnError("\"host\" parameter is not defined. Please define host parameter as: \"-Jhost=example.com\"");
}

String path = "${base_path}";
String slash = "/";
if (!slash.equals(path.substring(path.length() -1)) || !slash.equals(path.substring(0, 1))) {
    return stopTestOnError("\"base_path\" parameter is invalid. It must start and end with \"/\"");
}
</stringProp>
        <stringProp name="BeanShellSampler.filename"/>
        <stringProp name="BeanShellSampler.parameters"/>
        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
      </BeanShellSampler>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}${admin_path}</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="-1397214398">Welcome</stringProp>
            <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
          <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
          <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
          <stringProp name="RegexExtractor.template">$1$</stringProp>
          <stringProp name="RegexExtractor.default"/>
          <stringProp name="RegexExtractor.match_number">1</stringProp>
        </RegexExtractor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="2845929">^.+$</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">1</intProp>
          <stringProp name="Assertion.scope">variable</stringProp>
          <stringProp name="Scope.variable">admin_form_key</stringProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments">
            <elementProp name="dummy" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">false</boolProp>
              <stringProp name="Argument.value"/>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">dummy</stringProp>
            </elementProp>
            <elementProp name="form_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">false</boolProp>
              <stringProp name="Argument.value">${admin_form_key}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">form_key</stringProp>
            </elementProp>
            <elementProp name="login[password]" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">${admin_password}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">login[password]</stringProp>
            </elementProp>
            <elementProp name="login[username]" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">${admin_user}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">login[username]</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</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.implementation">Java</stringProp>
        <boolProp name="HTTPSampler.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
        <stringProp name="TestPlan.comments">Implementation needs to be set to Java as per http://stackoverflow.com/questions/19636282/jmeter-error-in-redirect-url-for-get</stringProp>
      </HTTPSamplerProxy>
      <hashTree>
    <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert logged-in" enabled="true">
      <collectionProp name="Asserion.test_strings">
        <stringProp name="1847038912">&lt;title&gt;Dashboard / Magento Admin&lt;/title&gt;</stringProp>
      </collectionProp>
      <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
      <boolProp name="Assertion.assume_success">false</boolProp>
      <intProp name="Assertion.test_type">2</intProp>
    </ResponseAssertion>
    <hashTree/>
  </hashTree>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request: Admin - Enable All Cache Types" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments">
            <elementProp name="form_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">${admin_form_key}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">form_key</stringProp>
            </elementProp>
            <elementProp name="massaction_prepare_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">types</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">massaction_prepare_key</stringProp>
            </elementProp>
            <elementProp name="types" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">config,layout,block_html,collections,reflection,db_ddl,eav,config_integration,full_page,target_rule,translate,config_webservice,config_integration_api</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">types</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/massEnable</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
        <stringProp name="TestPlan.comments">Begin by enabling all cache types</stringProp>
      </HTTPSamplerProxy>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request: Admin - Refresh All Cache Types" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments">
            <elementProp name="form_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">${admin_form_key}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">form_key</stringProp>
            </elementProp>
            <elementProp name="massaction_prepare_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">types</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">massaction_prepare_key</stringProp>
            </elementProp>
            <elementProp name="types" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">config,layout,block_html,collections,reflection,db_ddl,eav,config_integration,full_page,target_rule,translate,config_webservice,config_integration_api</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">types</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/massRefresh</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
        <stringProp name="TestPlan.comments">Refresh all cache types</stringProp>
      </HTTPSamplerProxy>
      <hashTree/>
      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Extract categories" enabled="true"/>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Content-Type</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Accept</stringProp>
              <stringProp name="Header.value">*/*</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <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">admin_token</stringProp>
            <stringProp name="JSONPATH">$</stringProp>
            <stringProp name="DEFAULT"/>
            <stringProp name="VARIABLE"/>
            <stringProp name="SUBJECT">BODY</stringProp>
          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
          <hashTree/>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">1</intProp>
            <stringProp name="Assertion.scope">variable</stringProp>
            <stringProp name="Scope.variable">admin_token</stringProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Authorization</stringProp>
              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Categories Names and skus" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">path</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">1/2/%</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][0][filters][0][conditionType]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">like</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][conditionType]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][1][filters][0][field]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">level</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][field]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][1][filters][0][value]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">2</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][value]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">${categories_count}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/categories/list</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">false</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category url key" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">category_url_keys</stringProp>
            <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category name" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">category_names</stringProp>
            <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
        </hashTree>
      </hashTree>
      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: category url keys loop" enabled="true">
        <stringProp name="ForeachController.inputVal">category_url_keys</stringProp>
        <stringProp name="ForeachController.returnVal">category_url_key</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">category_url_key_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect category url keys" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;

// If it is first iteration of cycle then recreate category url key list
if (1 == Integer.parseInt(vars.get("category_url_key_counter"))) {
    categoryUrlKeysList = new ArrayList();
    props.put("category_url_keys_list", categoryUrlKeysList);
    props.put("category_url_key", vars.get("category_url_key"));
} else {
    categoryUrlKeysList = props.get("category_url_keys_list");
}
categoryUrlKeysList.add(vars.get("category_url_key"));</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: category names loop" enabled="true">
        <stringProp name="ForeachController.inputVal">category_names</stringProp>
        <stringProp name="ForeachController.returnVal">category_name</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">category_name_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect category names" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;

// If it is first iteration of cycle then recreate category name list
if (1 == Integer.parseInt(vars.get("category_name_counter"))) {
    categoryNamesList = new ArrayList();
    props.put("category_names_list",categoryNamesList);
    props.put("category_name", vars.get("category_name"));
} else {
    categoryNamesList = props.get("category_names_list");
}

categoryNamesList.add(vars.get("category_name"));</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect category" enabled="true">
        <stringProp name="BeanShellSampler.query">props.put("category_url_key", vars.get("category_url_key"));
props.put("category_name", vars.get("category_name"));</stringProp>
        <stringProp name="BeanShellSampler.filename"/>
        <stringProp name="BeanShellSampler.parameters"/>
        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
      </BeanShellSampler>
      <hashTree/>
      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Retrieve simple products" enabled="true"/>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Content-Type</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Accept</stringProp>
              <stringProp name="Header.value">*/*</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <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">admin_token</stringProp>
            <stringProp name="JSONPATH">$</stringProp>
            <stringProp name="DEFAULT"/>
            <stringProp name="VARIABLE"/>
            <stringProp name="SUBJECT">BODY</stringProp>
          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
          <hashTree/>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">1</intProp>
            <stringProp name="Assertion.scope">variable</stringProp>
            <stringProp name="Scope.variable">admin_token</stringProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Authorization</stringProp>
              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get simple 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="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">type_id</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">simple</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">${simple_products_count}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">simple_products_url_keys</stringProp>
            <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">simple_product_ids</stringProp>
            <stringProp name="RegexExtractor.regex">\"id\":(\d+),</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product titles" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">simple_product_names</stringProp>
            <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
        </hashTree>
      </hashTree>
      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Prepare simple products" enabled="true">
        <stringProp name="ForeachController.inputVal">simple_product_ids</stringProp>
        <stringProp name="ForeachController.returnVal">simple_product_id</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">simple_products_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect simple product" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
import java.util.HashMap;
import org.apache.commons.codec.binary.Base64;

// If it is first iteration of cycle then recreate productList
if (1 == Integer.parseInt(vars.get("simple_products_counter"))) {
    productList = new ArrayList();
    props.put("simple_products_list", productList);
} else {
    productList = props.get("simple_products_list");
}
String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("simple_products_url_keys_" + vars.get("simple_products_counter"))+ vars.get("url_suffix");
encodedUrl = Base64.encodeBase64(productUrl.getBytes());
// Create product map
Map productMap = new HashMap();
productMap.put("id", vars.get("simple_product_id"));
productMap.put("title", vars.get("simple_product_names_" + vars.get("simple_products_counter")));
productMap.put("url_key", vars.get("simple_products_url_keys_" + vars.get("simple_products_counter")));
productMap.put("uenc", new String(encodedUrl));

// Collect products map in products list
productList.add(productMap);</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Retrieve configurable products" enabled="true"/>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Content-Type</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Accept</stringProp>
              <stringProp name="Header.value">*/*</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <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">admin_token</stringProp>
            <stringProp name="JSONPATH">$</stringProp>
            <stringProp name="DEFAULT"/>
            <stringProp name="VARIABLE"/>
            <stringProp name="SUBJECT">BODY</stringProp>
          </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
          <hashTree/>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">1</intProp>
            <stringProp name="Assertion.scope">variable</stringProp>
            <stringProp name="Scope.variable">admin_token</stringProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Authorization</stringProp>
              <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get configurable 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="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">type_id</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">configurable</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
              </elementProp>
              <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">${configurable_products_count}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}rest/V1/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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">configurable_products_url_keys</stringProp>
            <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">configurable_product_ids</stringProp>
            <stringProp name="RegexExtractor.regex">\"id\":(\d+),</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product titles" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">configurable_product_names</stringProp>
            <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product skus" enabled="true">
            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
            <stringProp name="RegexExtractor.refname">configurable_product_skus</stringProp>
            <stringProp name="RegexExtractor.regex">sku\":\"(.*?)\"</stringProp>
            <stringProp name="RegexExtractor.template">$1$</stringProp>
            <stringProp name="RegexExtractor.default"/>
            <stringProp name="RegexExtractor.match_number">-1</stringProp>
          </RegexExtractor>
          <hashTree/>
        </hashTree>
      </hashTree>
      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Prepare configurable products" enabled="true">
        <stringProp name="ForeachController.inputVal">configurable_product_ids</stringProp>
        <stringProp name="ForeachController.returnVal">configurable_product_id</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">configurable_products_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect configurable product" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
import java.util.HashMap;
import org.apache.commons.codec.binary.Base64;

// If it is first iteration of cycle then recreate productList
if (1 == Integer.parseInt(vars.get("configurable_products_counter"))) {
    productList = new ArrayList();
    props.put("configurable_products_list", productList);
} else {
    productList = props.get("configurable_products_list");
}

String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("configurable_products_url_keys_" + vars.get("configurable_products_counter"))+ vars.get("url_suffix");
encodedUrl = Base64.encodeBase64(productUrl.getBytes());
// Create product map
Map productMap = new HashMap();
productMap.put("id", vars.get("configurable_product_id"));
productMap.put("title", vars.get("configurable_product_names_" + vars.get("configurable_products_counter")));
productMap.put("sku", vars.get("configurable_product_skus_" + vars.get("configurable_products_counter")));
productMap.put("url_key", vars.get("configurable_products_url_keys_" + vars.get("configurable_products_counter")));
productMap.put("uenc", new String(encodedUrl));

// Collect products map in products list
productList.add(productMap);</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Open Customer Grid" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
          <stringProp name="filename"/>
          <stringProp name="parameters"/>
          <boolProp name="resetInterpreter">true</boolProp>
          <stringProp name="script">import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie cookie = new Cookie("adminhtml",vars.get("COOKIE_adminhtml"),vars.get("host"),"/",false,0);
manager.add(cookie); </stringProp>
        </BeanShellPreProcessor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Customer Grid" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="-679437259">Customers</stringProp>
            <stringProp name="495525733">&lt;title&gt;Customers / Customers / Magento Admin&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Search Customers" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="namespace" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">customer_listing</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">namespace</stringProp>
          </elementProp>
          <elementProp name="search" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">search</stringProp>
          </elementProp>
          <elementProp name="filters[placeholder]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">customer_since[locale]=en_US&amp;website_id=1</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">filters[placeholder]</stringProp>
          </elementProp>
          <elementProp name="paging[pageSize]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">${customers_page_size}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">paging[pageSize]</stringProp>
          </elementProp>
          <elementProp name="paging[current]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">1</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">paging[current]</stringProp>
          </elementProp>
          <elementProp name="sorting[field]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">entity_id</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sorting[field]</stringProp>
          </elementProp>
          <elementProp name="sorting[direction]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">asc</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sorting[direction]</stringProp>
          </elementProp>
          <elementProp name="isAjax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">isAjax</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert total records is not 0" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="827137952">\"totalRecords\":0</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">20</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer emails" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">customer_emails</stringProp>
        <stringProp name="RegexExtractor.regex">\"email\":\"([^"]+)</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">-1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer ids" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">customer_ids</stringProp>
        <stringProp name="RegexExtractor.regex">\"entity_id\":\"([^"]+)</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">-1</stringProp>
      </RegexExtractor>
      <hashTree/>
    </hashTree>
  <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: customer emails loop (search result)" enabled="true">
        <stringProp name="ForeachController.inputVal">customer_emails</stringProp>
        <stringProp name="ForeachController.returnVal">customer_email</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">email_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect customer emails" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;

// If it is first iteration of cycle then recreate emailsList
if (1 == Integer.parseInt(vars.get("email_counter"))) {
    emailsList = new ArrayList();
    props.put("customer_emails_list", emailsList);
} else {
    emailsList = props.get("customer_emails_list");
}
emailsList.add(vars.get("customer_email"));</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: customer ids loop (search result)" enabled="true">
        <stringProp name="ForeachController.inputVal">customer_ids</stringProp>
        <stringProp name="ForeachController.returnVal">customer_id</stringProp>
        <boolProp name="ForeachController.useSeparator">true</boolProp>
      </ForeachController>
      <hashTree>
        <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
          <stringProp name="CounterConfig.start">1</stringProp>
          <stringProp name="CounterConfig.end"/>
          <stringProp name="CounterConfig.incr">1</stringProp>
          <stringProp name="CounterConfig.name">id_counter</stringProp>
          <stringProp name="CounterConfig.format"/>
          <boolProp name="CounterConfig.per_user">false</boolProp>
        </CounterConfig>
        <hashTree/>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect customer ids" enabled="true">
          <stringProp name="BeanShellSampler.query">import java.util.ArrayList;

// If it is first iteration of cycle then recreate idsList
if (1 == Integer.parseInt(vars.get("id_counter"))) {
    idsList = new ArrayList();
    props.put("customer_ids_list", idsList);
} else {
    idsList = props.get("customer_ids_list");
}
idsList.add(vars.get("customer_id"));</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Validate properties and count users" enabled="true">
        <stringProp name="BeanShellSampler.query">Boolean stopTestOnError (String error) {
    log.error(error);
    System.out.println(error);
    SampleResult.setStopTest(true);
    return false;
}

if (props.get("simple_products_list") == null) {
    return stopTestOnError("Cannot find simple products. Test stopped.");
}
if (props.get("configurable_products_list") == null) {
    return stopTestOnError("Cannot find configurable products. Test stopped.");
}
if (props.get("customer_emails_list") == null) {
    return stopTestOnError("Cannot find customer emails. Test stopped.");
}
if (props.get("category_url_keys_list") == null) {
	return stopTestOnError("Cannot find category url keys. Test stopped.");
}
if (props.get("category_names_list") == null) {
	return stopTestOnError("Cannot find category names. Test stopped.");
}
int orders = Integer.parseInt(vars.get("orders"));


if (orders &gt; 0) {
    int checkout_sum = Integer.parseInt(vars.get("guest_checkout_percent")) + Integer.parseInt(vars.get("customer_checkout_percent"));
    checkout_sum = checkout_sum &gt; 0 ? checkout_sum : 1;
    int users = orders * (100 / checkout_sum);
    props.put("users", users);
} else {
    props.put("users", Integer.parseInt(vars.get("users")));
}
</stringProp>
        <stringProp name="BeanShellSampler.filename"/>
        <stringProp name="BeanShellSampler.parameters"/>
        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
      </BeanShellSampler>
      <hashTree/>
      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller: Disable cache type?" enabled="true">
        <stringProp name="IfController.condition">"${cache_indicator}" == "1" || "${cache_indicator}" == "2"</stringProp>
        <boolProp name="IfController.evaluateAll">false</boolProp>
      </IfController>
      <hashTree>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: resolve cache types" enabled="true">
          <stringProp name="BeanShellSampler.query">// Default to disable all cache types
vars.put("cache_types", "config,layout,block_html,collections,reflection,db_ddl,eav,config_integration,full_page,target_rule,translate,config_webservice,config_integration_api");

if ("${cache_indicator}" == "1") {
	// Only disable Full Page Cache
	vars.put("cache_types", "full_page");
}
</stringProp>
          <stringProp name="BeanShellSampler.filename"/>
          <stringProp name="BeanShellSampler.parameters"/>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request: Admin - Disable Specific Cache Types" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="form_key" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">${admin_form_key}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">form_key</stringProp>
              </elementProp>
              <elementProp name="massaction_prepare_key" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">types</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">massaction_prepare_key</stringProp>
              </elementProp>
              <elementProp name="types" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">true</boolProp>
                <stringProp name="Argument.value">${cache_types}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">types</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/massDisable</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.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree/>
      </hashTree>
      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - All Enabled" enabled="true">
        <stringProp name="IfController.condition">"${cache_indicator}" == "0"</stringProp>
        <boolProp name="IfController.evaluateAll">false</boolProp>
      </IfController>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - All Enabled" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="form_key" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${admin_form_key}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">form_key</stringProp>
                <stringProp name="Argument.desc">true</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Enabled" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="860336383">TRANSLATE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="1466502763">CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-1659688004">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-21423984">BLOCK_HTML(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="593884002">COLLECTION_DATA(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-751452301">EAV(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="1611481748">FPC(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="846147458">DB_DDL(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-534412103">INTEGRATION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-72935653">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="330643820">WEBSERVICE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-479894558">REFLECTION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="1450477507">TARGET_RULE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">2</intProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
      </hashTree>
      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - Only FPC Disabled" enabled="true">
        <stringProp name="IfController.condition">"${cache_indicator}" == "1"</stringProp>
        <boolProp name="IfController.evaluateAll">false</boolProp>
      </IfController>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - Only FPC Disabled" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="form_key" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${admin_form_key}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">form_key</stringProp>
                <stringProp name="Argument.desc">true</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Disabled" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="860336383">TRANSLATE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="1466502763">CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-1659688004">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-21423984">BLOCK_HTML(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="593884002">COLLECTION_DATA(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-751452301">EAV(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-2075232047">FPC(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="846147458">DB_DDL(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-534412103">INTEGRATION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-72935653">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="330643820">WEBSERVICE(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="-479894558">REFLECTION(?s).+?&lt;span&gt;Enabled&lt;/span&gt;</stringProp>
              <stringProp name="46789595">TARGET_RULE(?s).+?&lt;span&gt;Enabled&lt;/span</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">2</intProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
      </hashTree>
      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller - Cache Validation - All Disabled" enabled="true">
        <stringProp name="IfController.condition">"${cache_indicator}" == "2"</stringProp>
        <boolProp name="IfController.evaluateAll">false</boolProp>
      </IfController>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - HTTP Request - Cache Validation - All Disabled" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="form_key" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${admin_form_key}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">form_key</stringProp>
                <stringProp name="Argument.desc">true</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/cache/</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree>
          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion - Cache Validation - All Disabled" enabled="true">
            <collectionProp name="Asserion.test_strings">
              <stringProp name="409065414">TRANSLATE(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="2020354010">CONFIG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="-402279255">LAYOUT_GENERAL_CACHE_TAG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="-1155702187">BLOCK_HTML(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="738976195">COLLECTION_DATA(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="1983223762">EAV(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="-2075232047">FPC(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="-30791261">DB_DDL(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="121535308">INTEGRATION(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="1542403370">INTEGRATION_API_CONFIG(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="1168465145">WEBSERVICE(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="1811579203">REFLECTION(?s).+?&lt;span&gt;Disabled&lt;/span&gt;</stringProp>
              <stringProp name="49147452">TARGET_RULE(?s).+?&lt;span&gt;Disabled&lt;/span</stringProp>
            </collectionProp>
            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
            <boolProp name="Assertion.assume_success">false</boolProp>
            <intProp name="Assertion.test_type">2</intProp>
          </ResponseAssertion>
          <hashTree/>
        </hashTree>
      </hashTree>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Ajax Load Login Form" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments">
            <elementProp name="blocks" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">["customer_form_login"]</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">blocks</stringProp>
            </elementProp>
            <elementProp name="handles" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">["default","customer_account_login"]</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">handles</stringProp>
            </elementProp>
            <elementProp name="originalRequest" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">{"route":"customer","controller":"account","action":"login","uri":"/customer/account/login/"}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">originalRequest</stringProp>
            </elementProp>
            <elementProp name="ajax" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">true</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">ajax</stringProp>
            </elementProp>
            <elementProp name="isAjax" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">true</boolProp>
              <stringProp name="Argument.value">true</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">isAjax</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}page_cache/block/render/</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="940598773">"customer_form_login"</stringProp>
            <stringProp name="1951684663">Registered Customers</stringProp>
            <stringProp name="474011748">form_key</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
          <stringProp name="RegexExtractor.refname">form_key</stringProp>
          <stringProp name="RegexExtractor.regex">&lt;input name=\\"form_key\\" type=\\"hidden\\" value=\\"([^'"]+)\\" \\/&gt;</stringProp>
          <stringProp name="RegexExtractor.template">$1$</stringProp>
          <stringProp name="RegexExtractor.default"/>
          <stringProp name="RegexExtractor.match_number">1</stringProp>
        </RegexExtractor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="2845929">^.+$</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">1</intProp>
          <stringProp name="Assertion.scope">variable</stringProp>
          <stringProp name="Scope.variable">form_key</stringProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - WarmUp Add To Cart" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments">
            <elementProp name="product" 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">product</stringProp>
            </elementProp>
            <elementProp name="related_product" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">false</boolProp>
              <stringProp name="Argument.value"/>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
              <boolProp name="HTTPArgument.always_encode">false</boolProp>
              <stringProp name="Argument.value">${form_key}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
              <boolProp name="HTTPArgument.use_equals">true</boolProp>
              <stringProp name="Argument.name">form_key</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree/>
    </hashTree>
  
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Catalog Browsing By Guest" 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">${loops}</stringProp>
      </elementProp>
      <stringProp name="ThreadGroup.num_threads">${__javaScript(Math.round(props.get("users")*${view_catalog_percent}/100&gt;&gt;0))}</stringProp>
      <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
      <longProp name="ThreadGroup.start_time">1437409133000</longProp>
      <longProp name="ThreadGroup.end_time">1437409133000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </ThreadGroup>
    <hashTree>
    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Get arguments${__property(activeAdminThread)}(CatProdBrows)" enabled="true">
      <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
      <stringProp name="BeanShellSampler.query">
import java.util.Random;
Random random = new Random();
if (${seedForRandom} &gt; 0) {
    random.setSeed(${seedForRandom});
}
number = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number);
vars.put("simple_product_1_url_key", simpleList.get("url_key"));
vars.put("simple_product_1_name", simpleList.get("title"));
vars.put("simple_product_1_id", simpleList.get("id"));

number1 = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number1);
vars.put("simple_product_2_url_key", simpleList.get("url_key"));
vars.put("simple_product_2_name", simpleList.get("title"));
vars.put("simple_product_2_id", simpleList.get("id"));

number = random.nextInt(props.get("configurable_products_list").size());
configurableList = props.get("configurable_products_list").get(number);
vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
vars.put("configurable_product_1_name", configurableList.get("title"));
vars.put("configurable_product_1_id", configurableList.get("id"));

number = random.nextInt(props.get("category_url_keys_list").size());
vars.put("category_url_key", props.get("category_url_keys_list").get(number));
vars.put("category_name", props.get("category_names_list").get(number));
vars.put("testLabel", "CatProdBrows");</stringProp>
      <stringProp name="BeanShellSampler.filename"/>
      <stringProp name="BeanShellSampler.parameters"/>
      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
    </BeanShellSampler>
    <hashTree/>
  
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">category_id</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1191417111">^[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">category_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1254853024">&lt;title&gt;${simple_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_2_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2142356705">&lt;title&gt;${simple_product_2_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${configurable_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="199922279">&lt;title&gt;${configurable_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  </hashTree>
  
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Abandoned Cart By Guest" 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">${loops}</stringProp>
      </elementProp>
      <stringProp name="ThreadGroup.num_threads">${__javaScript(Math.round(props.get("users")*${view_product_add_to_cart_percent}/100&gt;&gt;0))}</stringProp>
      <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
      <longProp name="ThreadGroup.start_time">1437411475000</longProp>
      <longProp name="ThreadGroup.end_time">1437411475000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </ThreadGroup>
    <hashTree>
    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Get arguments${__property(activeAdminThread)}(BrowsAddToCart)" enabled="true">
      <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
      <stringProp name="BeanShellSampler.query">
import java.util.Random;
Random random = new Random();
if (${seedForRandom} &gt; 0) {
    random.setSeed(${seedForRandom});
}
number = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number);
vars.put("simple_product_1_url_key", simpleList.get("url_key"));
vars.put("simple_product_1_name", simpleList.get("title"));
vars.put("simple_product_1_id", simpleList.get("id"));
vars.put("simple_product_1_uenc", simpleList.get("uenc"));

number1 = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number1);
vars.put("simple_product_2_url_key", simpleList.get("url_key"));
vars.put("simple_product_2_name", simpleList.get("title"));
vars.put("simple_product_2_id", simpleList.get("id"));
vars.put("simple_product_2_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("configurable_products_list").size());
configurableList = props.get("configurable_products_list").get(number);
vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
vars.put("configurable_product_1_name", configurableList.get("title"));
vars.put("configurable_product_1_id", configurableList.get("id"));
vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
vars.put("configurable_product_1_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("category_url_keys_list").size());
vars.put("category_url_key", props.get("category_url_keys_list").get(number));
vars.put("category_name", props.get("category_names_list").get(number));
vars.put("testLabel", "BrowsAddToCart");
vars.put("loadType", "Guest");</stringProp>
      <stringProp name="BeanShellSampler.filename"/>
      <stringProp name="BeanShellSampler.parameters"/>
      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
    </BeanShellSampler>
    <hashTree/>
  
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Load Login Form${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="blocks" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["customer_form_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">blocks</stringProp>
          </elementProp>
          <elementProp name="handles" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["default","customer_account_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">handles</stringProp>
          </elementProp>
          <elementProp name="originalRequest" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">{"route":"customer","controller":"account","action":"login","uri":"/customer/account/login/"}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">originalRequest</stringProp>
          </elementProp>
          <elementProp name="ajax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">ajax</stringProp>
          </elementProp>
          <elementProp name="isAjax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">isAjax</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}page_cache/block/render/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="940598773">"customer_form_login"</stringProp>
          <stringProp name="1951684663">Registered Customers</stringProp>
          <stringProp name="474011748">form_key</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">form_key</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;input name=\\"form_key\\" type=\\"hidden\\" value=\\"([^'"]+)\\" \\/&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">form_key</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">category_id</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1191417111">^[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">category_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1254853024">&lt;title&gt;${simple_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>

    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="210217247">You added ${simple_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323027">\"summary_count\":1</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_2_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2142356705">&lt;title&gt;${simple_product_2_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}2${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="221533374">You added ${simple_product_2_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323026">\"summary_count\":2</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${configurable_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="199922279">&lt;title&gt;${configurable_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    
    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product sku" enabled="true">
      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
      <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
      <stringProp name="RegexExtractor.regex">itemprop="sku"&gt;([^&lt;]*)&lt;\/</stringProp>
      <stringProp name="RegexExtractor.template">$1$</stringProp>
      <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
      <stringProp name="RegexExtractor.match_number">1</stringProp>
    </RegexExtractor>
    <hashTree/>
  </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Configurable Product Options" enabled="true">
      <boolProp name="LoopController.continue_forever">true</boolProp>
      <stringProp name="LoopController.loops">1</stringProp>
    </LoopController>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">*/*</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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">admin_token</stringProp>
          <stringProp name="JSONPATH">$</stringProp>
          <stringProp name="DEFAULT"/>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">1</intProp>
          <stringProp name="Assertion.scope">variable</stringProp>
          <stringProp name="Scope.variable">admin_token</stringProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Authorization</stringProp>
            <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_sku}/options/all</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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="JSON Path Extractor: Extract attribute_ids" enabled="true">
          <stringProp name="VAR">attribute_ids</stringProp>
          <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <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="JSON Path Extractor: Extract option_values" enabled="true">
          <stringProp name="VAR">option_values</stringProp>
          <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
      </hashTree>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="super_attribute[${configurable_attribute_id}]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_option_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">super_attribute[${configurable_attribute_id}]</stringProp>
          </elementProp>
          <elementProp name="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
                <boolProp name="resetInterpreter">false</boolProp>
                <stringProp name="parameters"/>
                <stringProp name="filename"/>
                <stringProp name="script">
                    try {
                    attribute_ids = vars.get("attribute_ids");
                    option_values = vars.get("option_values");
                    attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
                    option_values = option_values.replace("[","").replace("]","").replace("\"", "");
                    attribute_ids_array = attribute_ids.split(",");
                    option_values_array = option_values.split(",");
                    args = ctx.getCurrentSampler().getArguments();
                    it = args.iterator();
                    while (it.hasNext()) {
                        argument = it.next();
                        if (argument.getStringValue().contains("${")) {
                            args.removeArgument(argument.getName());
                        }
                    }
                    for (int i = 0; i &lt; attribute_ids_array.length; i++) {
                        ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
                    }
                    } catch (Exception e) {
                        log.error("eror&#x2026;", e);
                    }
                </stringProp>
              </BeanShellPreProcessor>
        <hashTree/>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}3${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1346272328">You added ${configurable_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-108122347">We don't have as many &amp;quot;${configurable_product_1_name}&amp;quot; as you requested.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323025">\"summary_count\":3</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  </hashTree>
  
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Checkout By Guest" 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">${loops}</stringProp>
      </elementProp>
      <stringProp name="ThreadGroup.num_threads">${__javaScript(Math.round(props.get("users")*${guest_checkout_percent}/100&gt;&gt;0))}</stringProp>
      <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
      <longProp name="ThreadGroup.start_time">1437409133000</longProp>
      <longProp name="ThreadGroup.end_time">1437409133000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </ThreadGroup>
    <hashTree>
    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Get arguments${__property(activeAdminThread)}(GuestChkt)" enabled="true">
      <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
      <stringProp name="BeanShellSampler.query">
import java.util.Random;
Random random = new Random();
if (${seedForRandom} &gt; 0) {
    random.setSeed(${seedForRandom});
}
number = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number);
vars.put("simple_product_1_url_key", simpleList.get("url_key"));
vars.put("simple_product_1_name", simpleList.get("title"));
vars.put("simple_product_1_id", simpleList.get("id"));
vars.put("simple_product_1_uenc", simpleList.get("uenc"));

number1 = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number1);
vars.put("simple_product_2_url_key", simpleList.get("url_key"));
vars.put("simple_product_2_name", simpleList.get("title"));
vars.put("simple_product_2_id", simpleList.get("id"));
vars.put("simple_product_2_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("configurable_products_list").size());
configurableList = props.get("configurable_products_list").get(number);
vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
vars.put("configurable_product_1_name", configurableList.get("title"));
vars.put("configurable_product_1_id", configurableList.get("id"));
vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
vars.put("configurable_product_1_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("category_url_keys_list").size());
vars.put("category_url_key", props.get("category_url_keys_list").get(number));
vars.put("category_name", props.get("category_names_list").get(number));
vars.put("testLabel", "GuestChkt");
vars.put("loadType", "Guest");</stringProp>
      <stringProp name="BeanShellSampler.filename"/>
      <stringProp name="BeanShellSampler.parameters"/>
      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
    </BeanShellSampler>
    <hashTree/>
  
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Load Login Form${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="blocks" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["customer_form_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">blocks</stringProp>
          </elementProp>
          <elementProp name="handles" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["default","customer_account_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">handles</stringProp>
          </elementProp>
          <elementProp name="originalRequest" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">{"route":"customer","controller":"account","action":"login","uri":"/customer/account/login/"}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">originalRequest</stringProp>
          </elementProp>
          <elementProp name="ajax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">ajax</stringProp>
          </elementProp>
          <elementProp name="isAjax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">isAjax</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}page_cache/block/render/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="940598773">"customer_form_login"</stringProp>
          <stringProp name="1951684663">Registered Customers</stringProp>
          <stringProp name="474011748">form_key</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">form_key</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;input name=\\"form_key\\" type=\\"hidden\\" value=\\"([^'"]+)\\" \\/&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">form_key</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">category_id</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1191417111">^[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">category_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1254853024">&lt;title&gt;${simple_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>

    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="210217247">You added ${simple_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323027">\"summary_count\":1</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_2_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2142356705">&lt;title&gt;${simple_product_2_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}2${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="221533374">You added ${simple_product_2_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323026">\"summary_count\":2</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${configurable_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="199922279">&lt;title&gt;${configurable_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    
    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product sku" enabled="true">
      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
      <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
      <stringProp name="RegexExtractor.regex">itemprop="sku"&gt;([^&lt;]*)&lt;\/</stringProp>
      <stringProp name="RegexExtractor.template">$1$</stringProp>
      <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
      <stringProp name="RegexExtractor.match_number">1</stringProp>
    </RegexExtractor>
    <hashTree/>
  </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Configurable Product Options" enabled="true">
      <boolProp name="LoopController.continue_forever">true</boolProp>
      <stringProp name="LoopController.loops">1</stringProp>
    </LoopController>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">*/*</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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">admin_token</stringProp>
          <stringProp name="JSONPATH">$</stringProp>
          <stringProp name="DEFAULT"/>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">1</intProp>
          <stringProp name="Assertion.scope">variable</stringProp>
          <stringProp name="Scope.variable">admin_token</stringProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Authorization</stringProp>
            <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_sku}/options/all</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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="JSON Path Extractor: Extract attribute_ids" enabled="true">
          <stringProp name="VAR">attribute_ids</stringProp>
          <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <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="JSON Path Extractor: Extract option_values" enabled="true">
          <stringProp name="VAR">option_values</stringProp>
          <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
      </hashTree>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="super_attribute[${configurable_attribute_id}]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_option_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">super_attribute[${configurable_attribute_id}]</stringProp>
          </elementProp>
          <elementProp name="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
                <boolProp name="resetInterpreter">false</boolProp>
                <stringProp name="parameters"/>
                <stringProp name="filename"/>
                <stringProp name="script">
                    try {
                    attribute_ids = vars.get("attribute_ids");
                    option_values = vars.get("option_values");
                    attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
                    option_values = option_values.replace("[","").replace("]","").replace("\"", "");
                    attribute_ids_array = attribute_ids.split(",");
                    option_values_array = option_values.split(",");
                    args = ctx.getCurrentSampler().getArguments();
                    it = args.iterator();
                    while (it.hasNext()) {
                        argument = it.next();
                        if (argument.getStringValue().contains("${")) {
                            args.removeArgument(argument.getName());
                        }
                    }
                    for (int i = 0; i &lt; attribute_ids_array.length; i++) {
                        ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
                    }
                    } catch (Exception e) {
                        log.error("eror&#x2026;", e);
                    }
                </stringProp>
              </BeanShellPreProcessor>
        <hashTree/>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}3${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1346272328">You added ${configurable_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-108122347">We don't have as many &amp;quot;${configurable_product_1_name}&amp;quot; as you requested.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323025">\"summary_count\":3</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">cart_id</stringProp>
        <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">form_key</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">cart_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">form_key</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Email Available${__property(activeAdminThread)}(${testLabel})" 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">{"customerEmail":"test@example.com"}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/isEmailAvailable</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${base_path}checkout/onepage/</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="3569038">true</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">8</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods${__property(activeAdminThread)}(${testLabel})" 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">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${base_path}checkout/onepage/</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1224567411">"available":true</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information${__property(activeAdminThread)}(${testLabel})" 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">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${base_path}checkout/onepage/</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1494218646">{"payment_methods":</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order${__property(activeAdminThread)}(${testLabel})" 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">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"12","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${base_path}checkout/onepage/</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-297987887">"[0-9]+"</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <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="Extract cart id" enabled="true">
        <stringProp name="VAR">order_id</stringProp>
        <stringProp name="JSONPATH">$</stringProp>
        <stringProp name="DEFAULT"/>
        <stringProp name="VARIABLE"/>
        <stringProp name="SUBJECT">BODY</stringProp>
      </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">order_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="494863233">Thank you for your purchase!</stringProp>
          <stringProp name="1635682758">Your order # is</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  </hashTree>
  
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Checkout By Customer" 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">${loops}</stringProp>
      </elementProp>
      <stringProp name="ThreadGroup.num_threads">${__javaScript(Math.round(props.get("users")*${customer_checkout_percent}/100&gt;&gt;0))}</stringProp>
      <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
      <longProp name="ThreadGroup.start_time">1437177203000</longProp>
      <longProp name="ThreadGroup.end_time">1437177203000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </ThreadGroup>
    <hashTree>
    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Get arguments${__property(activeAdminThread)}(CustomerChkt)" enabled="true">
      <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
      <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
import java.util.Random;
Random random = new Random();
if (${seedForRandom} &gt; 0) {
    random.setSeed(${seedForRandom});
}
number = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number);
vars.put("simple_product_1_url_key", simpleList.get("url_key"));
vars.put("simple_product_1_name", simpleList.get("title"));
vars.put("simple_product_1_id", simpleList.get("id"));
vars.put("simple_product_1_uenc", simpleList.get("uenc"));

number1 = random.nextInt(props.get("simple_products_list").size());
simpleList = props.get("simple_products_list").get(number1);
vars.put("simple_product_2_url_key", simpleList.get("url_key"));
vars.put("simple_product_2_name", simpleList.get("title"));
vars.put("simple_product_2_id", simpleList.get("id"));
vars.put("simple_product_2_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("configurable_products_list").size());
configurableList = props.get("configurable_products_list").get(number);
vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
vars.put("configurable_product_1_name", configurableList.get("title"));
vars.put("configurable_product_1_id", configurableList.get("id"));
vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
vars.put("configurable_product_1_uenc", simpleList.get("uenc"));

number = random.nextInt(props.get("category_url_keys_list").size());
vars.put("category_url_key", props.get("category_url_keys_list").get(number));
vars.put("category_name", props.get("category_names_list").get(number));

emails_index = 0;
if (!props.containsKey("customer_emails_index")) {
	props.put("customer_emails_index", emails_index);
}

try {
	emails_index = props.get("customer_emails_index");
	emails_list = props.get("customer_emails_list");
	if (emails_index == emails_list.size()) {
		emails_index=0;
	}
	vars.put("customer_email", emails_list.get(emails_index));
	props.put("customer_emails_index", ++emails_index);
}
catch (java.lang.Exception e) {
	   log.error("Caught Exception in 'Customer Checkout' thread.");
        log.info("Using default email address - user_1@example.com");
        vars.put("customer_email", "user_1@example.com");
}
vars.put("testLabel", "CustomerChkt");
vars.put("loadType", "Customer");</stringProp>
      <stringProp name="BeanShellSampler.filename"/>
      <stringProp name="BeanShellSampler.parameters"/>
      <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
    </BeanShellSampler>
    <hashTree/>
  
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <hashTree>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">2</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Load Login Form${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="blocks" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["customer_form_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">blocks</stringProp>
          </elementProp>
          <elementProp name="handles" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">["default","customer_account_login"]</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">handles</stringProp>
          </elementProp>
          <elementProp name="originalRequest" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">{"route":"customer","controller":"account","action":"login","uri":"/customer/account/login/"}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">originalRequest</stringProp>
          </elementProp>
          <elementProp name="ajax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">ajax</stringProp>
          </elementProp>
          <elementProp name="isAjax" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">isAjax</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}page_cache/block/render/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="940598773">"customer_form_login"</stringProp>
          <stringProp name="1951684663">Registered Customers</stringProp>
          <stringProp name="474011748">form_key</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">form_key</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;input name=\\"form_key\\" type=\\"hidden\\" value=\\"([^'"]+)\\" \\/&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">form_key</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
          <elementProp name="login[username]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">${customer_email}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">login[username]</stringProp>
          </elementProp>
          <elementProp name="login[password]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">${customer_password}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">login[password]</stringProp>
          </elementProp>
          <elementProp name="send" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">send</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">addressId</stringProp>
        <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">addressId</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">category_id</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
        <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1191417111">^[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">category_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="1254853024">&lt;title&gt;${simple_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>

    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="210217247">You added ${simple_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323027">\"summary_count\":1</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${simple_product_2_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2142356705">&lt;title&gt;${simple_product_2_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor: Extract product id" enabled="true">
        <stringProp name="XPathExtractor.default"/>
        <stringProp name="XPathExtractor.refname">product_id</stringProp>
        <stringProp name="XPathExtractor.xpathQuery">.//input[@type="hidden" and @name="product"]/@value</stringProp>
        <boolProp name="XPathExtractor.validate">false</boolProp>
        <boolProp name="XPathExtractor.tolerant">true</boolProp>
        <boolProp name="XPathExtractor.namespace">false</boolProp>
      </XPathExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert id" enabled="true">
        <collectionProp name="Asserion.test_strings">
         <stringProp name="89649215">^\d+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">product_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Ajax Review Simple Product 2 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}review/product/listAjax/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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="49586">200</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 2 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}2${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="221533374">You added ${simple_product_2_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2057973164">This product is out of stock.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323026">\"summary_count\":2</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 View${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}${configurable_product_1_url_key}${url_suffix}</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="199922279">&lt;title&gt;${configurable_product_1_name}</stringProp>
          <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    
    <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product sku" enabled="true">
      <stringProp name="RegexExtractor.useHeaders">false</stringProp>
      <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
      <stringProp name="RegexExtractor.regex">itemprop="sku"&gt;([^&lt;]*)&lt;\/</stringProp>
      <stringProp name="RegexExtractor.template">$1$</stringProp>
      <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
      <stringProp name="RegexExtractor.match_number">1</stringProp>
    </RegexExtractor>
    <hashTree/>
  </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Get Configurable Product Options" enabled="true">
      <boolProp name="LoopController.continue_forever">true</boolProp>
      <stringProp name="LoopController.loops">1</stringProp>
    </LoopController>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">*/*</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" 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">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
              <stringProp name="Argument.metadata">=</stringProp>
            </elementProp>
          </collectionProp>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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">admin_token</stringProp>
          <stringProp name="JSONPATH">$</stringProp>
          <stringProp name="DEFAULT"/>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">1</intProp>
          <stringProp name="Assertion.scope">variable</stringProp>
          <stringProp name="Scope.variable">admin_token</stringProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Authorization</stringProp>
            <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options${__property(activeAdminThread)}(${testLabel})" enabled="true">
        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
          <collectionProp name="Arguments.arguments"/>
        </elementProp>
        <stringProp name="HTTPSampler.domain"/>
        <stringProp name="HTTPSampler.port"/>
        <stringProp name="HTTPSampler.connect_timeout"/>
        <stringProp name="HTTPSampler.response_timeout"/>
        <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
        <stringProp name="HTTPSampler.contentEncoding"/>
        <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_sku}/options/all</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.monitor">false</boolProp>
        <stringProp name="HTTPSampler.embedded_url_re"/>
      </HTTPSamplerProxy>
      <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="JSON Path Extractor: Extract attribute_ids" enabled="true">
          <stringProp name="VAR">attribute_ids</stringProp>
          <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <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="JSON Path Extractor: Extract option_values" enabled="true">
          <stringProp name="VAR">option_values</stringProp>
          <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
          <stringProp name="DEFAULT">NO_VALUE</stringProp>
          <stringProp name="VARIABLE"/>
          <stringProp name="SUBJECT">BODY</stringProp>
        </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
        <hashTree/>
      </hashTree>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product 1 Add To Cart${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_product_1_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">product</stringProp>
          </elementProp>
          <elementProp name="related_product" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value"/>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">related_product</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="super_attribute[${configurable_attribute_id}]" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${configurable_option_id}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">super_attribute[${configurable_attribute_id}]</stringProp>
          </elementProp>
          <elementProp name="form_key" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${form_key}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">form_key</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
        <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
                <boolProp name="resetInterpreter">false</boolProp>
                <stringProp name="parameters"/>
                <stringProp name="filename"/>
                <stringProp name="script">
                    try {
                    attribute_ids = vars.get("attribute_ids");
                    option_values = vars.get("option_values");
                    attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
                    option_values = option_values.replace("[","").replace("]","").replace("\"", "");
                    attribute_ids_array = attribute_ids.split(",");
                    option_values_array = option_values.split(",");
                    args = ctx.getCurrentSampler().getArguments();
                    it = args.iterator();
                    while (it.hasNext()) {
                        argument = it.next();
                        if (argument.getStringValue().contains("${")) {
                            args.removeArgument(argument.getName());
                        }
                    }
                    for (int i = 0; i &lt; attribute_ids_array.length; i++) {
                        ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
                    }
                    } catch (Exception e) {
                        log.error("eror&#x2026;", e);
                    }
                </stringProp>
              </BeanShellPreProcessor>
        <hashTree/>
    </hashTree>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load ${loadType}3${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="sections" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">cart,messages</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">sections</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">true</boolProp>
            <stringProp name="Argument.value">true</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
          <elementProp name="_" elementType="HTTPArgument">
            <boolProp name="HTTPArgument.always_encode">false</boolProp>
            <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
            <boolProp name="HTTPArgument.use_equals">true</boolProp>
            <stringProp name="Argument.name">_</stringProp>
            <stringProp name="Argument.desc">true</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
    <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
      <collectionProp name="HeaderManager.headers">
        <elementProp name="" elementType="Header">
          <stringProp name="Header.name">X-Requested-With</stringProp>
          <stringProp name="Header.value">XMLHttpRequest</stringProp>
        </elementProp>
      </collectionProp>
    </HeaderManager>
    <hashTree/>
  
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1346272328">You added ${configurable_product_1_name} to your shopping cart.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-108122347">We don't have as many &amp;quot;${configurable_product_1_name}&amp;quot; as you requested.</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-350323025">\"summary_count\":3</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">6</intProp>
      </ResponseAssertion>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">cart_id</stringProp>
        <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">form_key</stringProp>
        <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address Id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">address_id</stringProp>
        <stringProp name="RegexExtractor.regex">"default_billing":"([^'"]+)",</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Customer Id" enabled="true">
        <stringProp name="RegexExtractor.useHeaders">false</stringProp>
        <stringProp name="RegexExtractor.refname">customer_id</stringProp>
        <stringProp name="RegexExtractor.regex">"customer_id":([^'",]+),</stringProp>
        <stringProp name="RegexExtractor.template">$1$</stringProp>
        <stringProp name="RegexExtractor.default"/>
        <stringProp name="RegexExtractor.match_number">1</stringProp>
      </RegexExtractor>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">cart_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="2845929">^.+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">form_key</stringProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Address Id extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="576002869">[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">address_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Customer Id extracted" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="576002869">[0-9]+$</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">1</intProp>
        <stringProp name="Assertion.scope">variable</stringProp>
        <stringProp name="Scope.variable">customer_id</stringProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods${__property(activeAdminThread)}(${testLabel})" 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">{"addressId":"${addressId}"}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/estimate-shipping-methods-by-address-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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${base_path}checkout/onepage/</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-1224567411">"available":true</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information${__property(activeAdminThread)}(${testLabel})" 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">{"addressInformation":{"shipping_address":{"customerAddressId":"${address_id}","countryId":"US","regionId":5,"regionCode":"AR","region":"Arkansas","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"},"shipping_method_code":"flatrate","shipping_carrier_code":"flatrate"}}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/shipping-information</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${host}${base_path}checkout/onepage</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="X-Requested-With" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
          <elementProp name="Accept" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-740937264">{"payment_methods"</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order${__property(activeAdminThread)}(${testLabel})" 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">{"cartId":"${cart_id}","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"customerAddressId":"${address_id}","countryId":"US","regionId":5,"regionCode":"AR","region":"Arkansas","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"}}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/payment-information</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Referer</stringProp>
            <stringProp name="Header.value">${host}${base_path}checkout/onepage</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/json; charset=UTF-8 </stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">Accept</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">X-Requested-With</stringProp>
            <stringProp name="Header.value">XMLHttpRequest</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
      <hashTree/>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert order number" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="-297987887">"[0-9]+"</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  
    <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Random Timer" enabled="true">
      <stringProp name="ConstantTimer.delay">${think_time_delay_offset}</stringProp>
      <stringProp name="RandomTimer.range">${think_time_deviation}</stringProp>
    </GaussianRandomTimer>
    <hashTree/>
  
    <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success${__property(activeAdminThread)}(${testLabel})" enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain"/>
      <stringProp name="HTTPSampler.port"/>
      <stringProp name="HTTPSampler.connect_timeout"/>
      <stringProp name="HTTPSampler.response_timeout"/>
      <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
      <stringProp name="HTTPSampler.contentEncoding"/>
      <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</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.monitor">false</boolProp>
      <stringProp name="HTTPSampler.embedded_url_re"/>
    </HTTPSamplerProxy>
    <hashTree>
      <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
        <collectionProp name="Asserion.test_strings">
          <stringProp name="494863233">Thank you for your purchase!</stringProp>
          <stringProp name="-1590086334">Your order number is</stringProp>
        </collectionProp>
        <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
        <boolProp name="Assertion.assume_success">false</boolProp>
        <intProp name="Assertion.test_type">2</intProp>
      </ResponseAssertion>
      <hashTree/>
    </hashTree>
  </hashTree>
  
    <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
      <stringProp name="ThreadGroup.on_sample_error">stoptest</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">1395324075000</longProp>
      <longProp name="ThreadGroup.end_time">1395324075000</longProp>
      <boolProp name="ThreadGroup.scheduler">false</boolProp>
      <stringProp name="ThreadGroup.duration"/>
      <stringProp name="ThreadGroup.delay"/>
    </PostThreadGroup>
    <hashTree>
      <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller: Dashboard enabled?" enabled="true">
        <stringProp name="IfController.condition">"${dashboard_enabled}" == "1"</stringProp>
        <boolProp name="IfController.evaluateAll">false</boolProp>
      </IfController>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Trigger End Event" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="environment" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${__property(environment)}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">environment</stringProp>
              </elementProp>
              <elementProp name="startTime" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${start_time}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">startTime</stringProp>
              </elementProp>
              <elementProp name="endTime" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">endTime</stringProp>
              </elementProp>
              <elementProp name="stats_server" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${redis_host}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
                <boolProp name="HTTPArgument.use_equals">true</boolProp>
                <stringProp name="Argument.name">stats_server</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain"/>
          <stringProp name="HTTPSampler.port"/>
          <stringProp name="HTTPSampler.connect_timeout"/>
          <stringProp name="HTTPSampler.response_timeout"/>
          <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"/>
          <stringProp name="HTTPSampler.path">${base_path}DeploymentEvent.php</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.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"/>
        </HTTPSamplerProxy>
        <hashTree/>
        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert curl call was successful" enabled="true">
          <collectionProp name="Asserion.test_strings">
            <stringProp name="185669135">Errors:</stringProp>
          </collectionProp>
          <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
          <boolProp name="Assertion.assume_success">false</boolProp>
          <intProp name="Assertion.test_type">6</intProp>
        </ResponseAssertion>
        <hashTree/>
      </hashTree>
      <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
        <collectionProp name="CookieManager.cookies">
          <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
            <stringProp name="Cookie.value">30</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>
      </CookieManager>
      <hashTree/>
      <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Clear properties" enabled="true">
        <stringProp name="BeanShellSampler.query">props.remove("category_url_key");
props.remove("category_name");
props.remove("simple_products_list");
props.remove("configurable_products_list");
props.remove("users");
props.remove("customer_emails_list");</stringProp>
        <stringProp name="BeanShellSampler.filename"/>
        <stringProp name="BeanShellSampler.parameters"/>
        <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
      </BeanShellSampler>
      <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>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>
      <objProp>
        <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>true</xml>
          <fieldNames>false</fieldNames>
          <responseHeaders>false</responseHeaders>
          <requestHeaders>true</requestHeaders>
          <responseDataOnError>false</responseDataOnError>
          <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
          <assertionsResultsToSave>0</assertionsResultsToSave>
          <bytes>true</bytes>
          <hostname>true</hostname>
          <threadCounts>true</threadCounts>
          <sampleCount>true</sampleCount>
        </value>
      </objProp>
      <stringProp name="filename"/>
    </ResultCollector>
    <hashTree/>
  
    <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="Detailed URLs report" enabled="true">
      <boolProp name="ResultCollector.error_logging">false</boolProp>
      <objProp>
        <name>saveConfig</name>
        <value class="SampleSaveConfiguration">
          <time>true</time>
          <latency>false</latency>
          <timestamp>false</timestamp>
          <success>false</success>
          <label>true</label>
          <code>false</code>
          <message>false</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>true</fieldNames>
          <responseHeaders>false</responseHeaders>
          <requestHeaders>false</requestHeaders>
          <responseDataOnError>false</responseDataOnError>
          <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
          <assertionsResultsToSave>0</assertionsResultsToSave>
          <url>true</url>
          <hostname>true</hostname>
          <threadCounts>true</threadCounts>
          <sampleCount>true</sampleCount>
        </value>
      </objProp>
      <stringProp name="filename">${report_save_path}/detailed-urls-report.log</stringProp>
    </ResultCollector>
    <hashTree/>
  
    <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary 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>
          <hostname>true</hostname>
          <threadCounts>true</threadCounts>
          <sampleCount>true</sampleCount>
        </value>
      </objProp>
      <stringProp name="filename">${report_save_path}/summary-report.log</stringProp>
    </ResultCollector>
    <hashTree/>
  </hashTree>
    <WorkBench guiclass="WorkBenchGui" testclass="WorkBench" testname="WorkBench" enabled="true">
      <boolProp name="WorkBench.save">true</boolProp>
    </WorkBench>
  </hashTree>
</jmeterTestPlan>
